EC2 환경에서 Docker 를 이용하여 Mysql 컨테이너 접속 및 실행 / 어플리케이션 실행
📍 1. EC2 환경에서 관리자 권한으로 변경 후 docker login
(docker login 후 username 과 password를 입력한다)
sudo su - // 관리자 권한으로 변경
docker login // 도커에 로그인
📍 2. 현재 mysql container가 실행되고 있는지 확인 후, 실행되지 않고 있을 경우, 실행시켜준다
컨테이너 실행 후, mysql에 로그인 한다.
docker ps
// 현재 실행되고 있는 컨테이너 목록
// EC2 인스턴스를 처음 연결할 경우, 실행되고 있는 컨테이너가 없을것이다 따라서 아래 명령어를 입력
docker ps -a
// 모든 컨테이너 목록
docker start [Container name]
// 해당 [Container names] 컨테이너 다시시작
// 다시시작에 성공할 경우 Container name이 출력될것이다.
docker exex -it [Container name] bash
// bash로 mysql 컨테이너 접근
// 접근에 성공하면 bash-4.4# 이라고 출력될 것이다.
mysql -uroot -p
// root 계정 로그인 입력 후 설정한 패스워드 입력
📍 3. Mysql에 접속 후 database를 확인 한다. 처음에는 DB schema가 존재하지 않아서 이를 생성해 주어야 한다.
※ 아래 명령어로 DB 스키마를 생성하지 않을 시, Spring Boot의 Docker Compose 파일에서 Mysql 실행 시 오류가 발생한다. SQL 명령어 이므로 끝에 따옴표( ; ) 붙이는 것을 잊지 말자
show databases; // 현재 database 스키마 목록을 보여준다
create database [DB명]; // Docker 파일에 명명한 DB명으로 생성한다
use [DB명] // 해당 DB 스키마를 이용한다
📍 4. 위와 같이 EC2 환경에서 Mysql 컨테이너 실행 후, 아래의 과정으로 접속하면 나의 local 환경에서 Mysql Workbench를 통해서 EC2 환경에서의 Mysql DB에 접근 할 수 있다.
(반드시 EC2 환경에서 Mysql에 접속한 후에 WorkBench에서 Connection이 가능하다)
Mysql Workbench에서 "+" 클릭
Connection Name : 이름을 지어준다
Hostname : EC2의 PublicIp 주소를 입력한다
Username : EC2 환경에서 지정한 username 입력
Password -> Store in Vault... -> Password: EC2 환경에서 지정한 password 입력
📍 5. EC2 환경에서 Mysql 컨테이너 실행 및 접속에 실행했으면 다음으로 Spring Boot 어플리케이션의 Container를 실행시키자.
(CONTAINER ID 나 NAMES로 접속하도록 한다)
root@ip-172-31-32-102:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker start [CONTAINER ID]
// Spring Boot 파일의 이미지로 만든 컨테이너의 [CONTAINER ID]
// CONTAINER ID 또는 NAMES로 접속하기
// IMAGE로는 실행 불가
📍 6. 그럼 아래와 같이 Mysql Container 와 Spring Boot Application의 Container가 실행되고 있는 것을 확인 할 수 있다.
반드시 아래 2개의 컨테이너가 실행되어야, 포스트맨에서 해당 EC2의 Public IP 주소에 접근할 경우 API 사용이 가능하다.
root@ip-172-31-32-102:~# docker ps
IMAGE COMMAND CREATED STATUS NAMES
luciano97/2024-review-api-v2 "java -jar /app.jar" 22 hours ago Up 6 seconds bold_torvalds
mysql:8.0.33 "docker-entrypoint.s…" 46 hours ago Up 39 minutes mysql-container
📍 7. EC2의 //Public IPv4 DNS:포트번호// 로 접속해서 Send로 요청을 보내면 아래와 같이 성공적으로 조회한 것을 확인할 수 있다.