목차

docker-compose

docker compose cli와 다른 것이다.

install v2

네트워크

docker-compose 에서 network 생성 불가시

networks:
  default:
    driver: bridge
    ipam:
      config:
        - subnet: ${MY_SUBNET:-192.168.100.1/24} # 192.168.100.x 대역의 subnet 으로 네트워크 생성
# .env 파일이나 환경 변수로 MY_SUBNET 값을 강제 지정가능함.
 
# 만약 network 이름이 default 가 아니라면, 각 service 에 네트워크 이름 명시 필요
services:
  myservice:
    networks:
      - mynetwork
networks:
  mynetwork:
    driver: bridge
    ipam:
      config:
        - subnet: ${MY_SUBNET:-192.168.100.1/24} # 192.168.100.x 대역의 subnet 으로 네트워크 생성

.env

MY_ENV_VAR=xxx docker compose up -d
 
# 혹은
export MY_ENV_VAR=xxx
docker compose up -d
servicename:
  environment:
    - MY_ENV_VAR=xxx # 명시적 값 설정
    - ANOTHER_ENV_VAR # 이 값은 외부 설정값이 그대로 container 로 주입됨.
  env_file:
    - web-variables.env # 환경변수 파일 내의 환경변수들이 전달됨.

Multiple docker-compose.yml 다중 파일 설정

# 두 파일을 순서대로 읽고 설정을 override 한다.
docker-compose -f docker-compose.yml -f docker-compose.production.yml up -d
# docker-compose.admin.yml 에 dbadmin, db-backup 이라는 서비스가 docker-compose.yml 에 있는 db에 접속해서 실행되는 것이라면
docker-compose -f docker-compose.yml -f docker-compose.admin.yml run dbadmin db-backup

Extending Service : 서비스 확장

# common-services.yml - 아래 서비스는 설정일 뿐, 실제로 작동하는게 아님
webapp:
  build: .
  ports:
    - "8000:8000"
  volumes:
    - "/data"
# docker-compose.yml - webapp 을 확장한 web 서비스
web:
  extends:
    file: common-services.yml
    service: webapp

참조