본문 바로가기
DevOps

EC2 환경에서 Docker 를 이용하여 Mysql 컨테이너 접속 및 실행 / 어플리케이션 실행

by asdft 2024. 4. 27.

📍 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로 요청을 보내면 아래와 같이 성공적으로 조회한 것을 확인할 수 있다.

'DevOps' 카테고리의 다른 글

[Docker] Java17 + Spring Boot + Docker + AWS EC2에 배포하기  (0) 2024.04.14