이번 글에서는 "Ubuntu 서버 위에 인프라 구축하기"의 마지막 단계인 "3단계 : docker-compose를 통해 구축하기" 과정을 진행해보겠다.
1. docker-compoes 세팅
2. docker-compose.yml 파일 작성
3. docker-compose.yml 파일을 통한 컨테이너 실행
지금 내가 사용하는 우분투 서버는 이미 세팅이 된 상태이다.
다음 명령어로 설치하고 세팅하면 된다.
sudo curl -SL "https://github.com/docker/compose/releases/download/v2.30.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
우선 관련 컨테이너가 존재하는지 확인하고, 존재한다면 다 삭제한다.
그리고 docker-compose.yml
파일을 작성한다. 파일의 위치는 딱히 상관없다. 나는 프로젝트 루트 디렉터리 상위 디렉터리에 생성했다.
vi docker-compose.yml
version: '3'
services:
db:
container_name: mysql-server
image: mysql:latest
ports:
- 3307:3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: app
MYSQL_USER: app
MYSQL_PASSWORD: app
networks:
- app-network
healthcheck:
test: ['CMD-SHELL', 'mysqladmin ping -h 127.0.0.1 -u root --password=$$MYSQL_ROOT_PASSWORD']
interval: 10s
timeout: 2s
retries: 100
backend:
container_name: backend-server
image: [계정명]/app-for-infra-test:ver1
ports:
- 8080:8080
environment:
MYSQL_HOST: db
depends_on:
db:
condition: service_healthy
networks:
- app-network
networks:
app-network:
driver: bridge
mysql 이미지, 그리고 전에 도커허브에 업로드했던 이미지를 사용한다.
방법은 매우 간단하다.
docker-compose up --detach
이 명령어 하나면 필요한 이미지나 네트워크 같은 자원들은 docker-compose에서 알아서 생성해준다. 명령어 하나면 된다.
실행이 잘 됐다. 다만
ver1
에 대한 경고가 떴다. 다음에는 latest
로 버전 설정을 하고 버전에 관한 걸 빼야겠다.
network도 잘 만들어졌고 컨테이너도 잘 실행중이다. api 요청도 잘 간다.
컨테이너 실행을 중지할 때도
docker-compose down
명령어 단 하나면 된다. 그럼 관련된 네트워크, 컨테이너를 모두 삭제해준다.
확인해보면 모두 말끔하게 사라졌음을 알 수 있다. 정말 편리하다!
이것으로 Ubuntu 서버 위에 인프라 구축하기 3부작을 모두 마쳤다. 다음에는 CI/CD를 활용한 EC2 배포에 대한 글을 작성하겠다.