spring app docker로 배포하는 글을 전에 작성했다. > 여기
docker-compose 세부 설명 > 여기
DB는 RDS(mysql)로 해서 문제 없을 줄 알았는데 중간에 redis를 사용하는 부분이 있어 컨테이너를 두 개 사용하는 방식으로 변경했다.
※ spring app 이미지가 docker hub에 올라가 있고 정상 가동 되고 있다는 가정하에 진행합니다.
기존에는 도커 엔진을 통해 명령을 실행했지만 도커 컴포즈는 docker-compose란 파일을 통해 명령을 사용한다.
도커 컴포즈를 통해 컨테이너를 생성하면 서비스 간의 네트워크가 자동으로 생성되어 두 개의 컨테이너를 연동하여 사용할 수 있다.(도커 엔진을 통해 따로 만들면 연동되지 않는다.)
version: '3'
services:
spring-app:
image: user/sample
container_name: sample
ports:
- "8080:8080"
depends_on:
- redis
redis:
image: redis:latest
container_name: redis
ports:
- "6379:6379"
▶ 이름 ~ 포트까지가 컨테이너 하나를 만드는 명령어(run)이다, 여러 개를 작성하는 경우는 여러 개의 컨테이너가 생성된다.(container_name 생략 가능)
리눅스는 컴포즈를 따로 다운로드 받아야 한다.
리눅스 서버에서 아래 명령어를 입력해주면 된다.
sudo apt install -y python3 python3-pip
sudo pip3 install docker-cpmpose
cmd에서 아래 명령어로 간단하게 실행 할 수 있다.
# docker-compose -f 파일위치\파일명 up - d
docker-compose -f C:\Users\user\Desktop\sample\docker-compose.yml up -d
위 명령어는 윈도우 버전인데 EC2 서버에서 사용해야한다면 docker-compose 파일을 리눅스 서버에 옮기고 위치를 확인해야한다.
윈도우 -> 리눅스 파일 이동1
윈도우 -> 리눅스 파일 이동2
scp -i "서버 pem 파일 드래그" C:\Users\user\Desktop\test/docker-compose.yml 서버ID@1IPv4 주소:/home/ubuntu(* 리눅스 서버 위치)
docker-compose -f /home/ubuntu/docker-compose.yml up -d