웹 시스템의 서버들을 역할 별로 3개로 나누는 설계
docker-compose up
명령어로 실행버전을 명시해야 함 version: '3.x'
service, network, volume 정의(root 단계에서)
image
: 베이스 이미지
build
: Dockerfile을 빌드하여 베이스 이미지로 지정할 경우
- context
: Dockerfile이 있는 디렉토리의 경로나 Git의 URL을 경로로 지정할 경우
- args
: 이미지를 빌드할 때 인수를 지정할 경우
services:
webserver:
build:
context: /data # 경로 지정
args: # 인수 지정
projectno: 1
user: asa
dockerfile: Dockerfile-alternate # Dockerfile
command
및 entrypoint
사용 가능
links
: 컨테이너 간 링크 연결. <'서비스명'>:<'alias명'> 3버전부터 사용 안함
ports
: <'host port'>:<'container port'>
- expose
: 호스트 머신에 대한 포트를 공개하지 않고 링크 기능을 사용하여 연결하는 컨테이너에게만 포트 공개
depends_on
: 서비스의 의존 관계(시작 순서). 시작 순서만 제어할 뿐 이용 가능해지는 시간까지 기다리는 것이 아님.
environment
: 컨테이너 안의 환경변수 지정
- env_file
: 환경변수가 많아서 다른 파일에 환경변수를 정의하고 불러들일 경우
container_name
: 컨테이너에 이름 붙이기. 커스텀명을 지정하면 여러 컨테이너로 스케일 할 수 없음에 유의.
- label
: 컨테이너에 라벨 붙이기
volumes
: 컨테이너에 볼륨 마운트
- volumes_from
: 다른 컨테이너로부터 모든 볼륨 마운트
version: "3.0"
services:
webserver:
image: ubuntu
ports:
- 80:80
networks:
- webnet
redis:
image: redis
networks:
- webnet
networks:
webnet:
volumes:
data-volume: