갑분 도커 컴포즈, 같은 기수분과 디코 채팅을 하던 도중 도커를 공부하시고 계시다고 하셔서 같이 듣게 되었다. 나의 경우 도커는 저번 프로젝트에서 사용하여 어느정도 사용이 가능한 상태였고 복습 겸 듣다가 프로젝트 때에는 서버를 인스턴스 단위로 분산시켜 도커 컴포즈를 사용할 일이 없었는데, 같은 환경 내에서 컨테이너로 띄우는 방식이었다면 필요했을 것 같아 알아두면 좋을듯하여 찾아보았다.
도커 컴포즈는 여러 개의 도커 컨테이너를 정의하고 동시에 실행할 수 있도록 도와주는 도구로 docker-compose.yml
파일을 통하여 애플리케이션 서비스, 네트워크, 볼륨등을 선언하여 정의할 수 있다. 이를 이용하여 한번에 모든 서버를 복제 및 실행할 수 있다.
version: "3.9"
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: 비밀번호
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:/var/lib/mysql
version은 도커 컴포즈 파일의 형식을 지정하는 버전이다. Docker Compose의 기능과 호환성을 정의한다.
services는 실행할 컨테이너들을 정의하는 섹션으로위의 경우에는 web, db가 정의되어 있다.
각각 내부에서 상세 적용시켜줄 수 있다.
volumes는 컨테이너 내부에 공간을 만들어 데이터의 영속성을 보장할 수 있다. 위의 예시의 경우 mysql 데이터 디렉토리를 호스트에 저장하여 데이터 영속성을 보장받는다.
docker-compose up
: 모든 서비스를 실행
- 옵션
-d: 백그라운드에서 실행
--build: 컨테이너를 새로 빌드한 후 실행
docker-compose down
: 모든 서비스를 중지하고 네트워크, 볼륨 등을 제거
docker-compose ps
: 실행 중인 서비스 목록 확인.
docker-compose logs
: 서비스 로그 확인.
- 옵션
-f: 실시간 로그 스트리밍
docker-compose build
: 이미지를 새로 빌드
docker-compose exec
: 실행 중인 컨테이너에서 명령어 실행
docker-compose config
: Compose 파일의 문법 및 구성을 검증
docker-compose scale
: 특정 서비스의 컨테이너 수를 조정
- docker-compose up --scale =를 사용해도 됨
docker-compose restart
: 서비스를 재시작