본문 바로가기

Tech/Docker

[Docker]docker compose Extension fields

Docker-compose version 3.4 부터 생긴 포맷라고 한다.

 

Compose file version 3 reference

 

docs.docker.com

 

선언은 파일의 맨 위에 선언해야 하며, 접두어로 x-를 붙여줘야한다.

선언시 &를 사용하고, 호출 시에는 *를 사용한다.

예시는 아래와 같다. (HDFS 구축 docker-compose 파일 중 일부)

version: "3.4"

# 이미지와 네트워크 정보에 대한 base service를 지정
x-datanode_base: &datanode_base
  image: hadoop-datanode:2.9.2
  networks:
    - bridge

services:
  datanode01:
    <<: *datanode_base
    container_name: datanode01
    hostname: datanode01
    volumes:
      - datanode01:/opt/hadoop/dfs/data

  datanode02:
    <<: *datanode_base
    container_name: datanode02
    hostname: datanode02
    volumes:
      - datanode02:/opt/hadoop/dfs/data

  datanode03:
    <<: *datanode_base
    container_name: datanode03
    hostname: datanode03
    volumes:
      - datanode03:/opt/hadoop/dfs/data

volumes:
  datanode01:
  datanode02:
  datanode03:

networks:
  bridge:

위처럼 반복되는 경우에 사용하면 좋다.

 

Override도 제공한다. 이때는 *만 사용하는 것이 아닌, <<도 쓴다.

version: "3.9"
x-volumes:
  &default-volume
  driver: foobar-storage

services:
  web:
    image: myapp/web:latest
    volumes: ["vol1", "vol2", "vol3"]
volumes:
  vol1: *default-volume
  vol2:
    << : *default-volume
    name: volume02
  vol3:
    << : *default-volume
    driver: default
    name: volume-local

 

위 처럼 사용할 경우, 아래와 같이 오버라이드 된다.

vol1:

  driver: foobar-storage

vol2:

  driver: foobar-storage

  name: volume02

vol3:

  driver: default

  name: volume-local

반응형

'Tech > Docker' 카테고리의 다른 글

docker volume 파일 우선순위  (0) 2021.05.04
docker 정의 정리  (0) 2021.02.18