Docker Compose?
- 다중 컨테이너 앱을 관리하기 좋은 툴
- Dockerfile처럼 docker-compose.yaml 파일로 관리 가능함
docker-compose.yaml
- 이 분이 너무 설명을 잘 해주심
- 예시 파일을 위에서 언급한 분 파일로 설명 진행할 예정
version: "3.9" # optional since v1.27.0
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- README.md:/docs/README.md
- logvolume01:/var/log
networks:
- service-network
redis:
image: redis
networks:
- service-network
volumes:
logvolume01: {}
networks:
service-network: {}
version
- compose 파일의 버전
- 버전마다 문법이 조금 다를 수 있기 때문에 주의 필요
service
- docker compose로 관리하고자 하는 서비스 (컨테이너) 명세
image
build
- 이미지를 직접 빌드하기 위한 용도
- 같은 디렉토리에 있는 Dockerfile을 참조하는게 기본
- 필요하면 지정할 수 있음
- image 옵션을 따로 주지 않으면
${service}:latest 라는 이름이 기본적으로 붙음
port
- 포트 매핑
${호스트 포트}:{컨테이너 포트}
volume
- 호스트의 파일을 컨테이너 안에 마운트
- 도커 볼륨을 따로 만들어서 그걸 컨테이너 안에 마운트
version: "3.9"
services:
web:
# ...
volumes:
- README.md:/docs/README.md # 호스트의 README.md 파일을 컨테이너 내부 /docs/README.md에 마운트
- logvolume01:/var/log # 선언된 도커 볼륨 logvolume01을 컨테이너 내부 /var/log에 마운트
# ...
volumes:
logvolume01: {} # 도커볼륨 logvolume01 선언
network
- 서비스(컨테이너) 가 포함될 네트워크 정의
- 서비스끼리 같은 네트워크에 들어가 있는게 아니면 기본적으로 통신이 안됨!