Instructions

Top-Level Volume in docker compose

Posting-Neuron 2023. 11. 30. 00:50

#docker-compose #top-level #volume

docker compose에서 volume들을 분리해서 따로 정의하고 이것들을 각 service에서 가져다가 사용하는 것을 top-level volume 이라고 한다.

services:
  backend:
    image: example/database
    volumes:
      - db-data:/etc/data

  backup:
    image: backup-service
    volumes:
      - db-data:/var/lib/backup/data

volumes:
  db-data:

docker compose up 했을 때 db-data가 없으면 생성하고 그렇지 않으면 있는 것이 사용된다.

Attributes

driver

volumes:
  db-data:
    driver: foobar

driver_opts

volumes:
  example:
    driver_opts:
      type: "nfs"
      o: "addr=10.40.0.199,nolock,soft,rw"
      device: ":/docker/example"

external

services:
  backend:
    image: example/database
    volumes:
      - db-data:/etc/data

volumes:
  db-data:
    external: true
  • 볼륨이 외부에서 관리됨을 의미한다. 만약 볼륨이 존재하지 않으면 오류가 난다.

labels

  • 볼륨의 메타데이터를 추가한다.
volumes:
  db-data:
    labels:
      com.example.description: "Database volume"
      com.example.department: "IT/Ops"
      com.example.label-with-empty-value: ""

name

  • yaml 키로 지정할 수 없는 이름을 사용하고자할 때 사용할 수 있다.
volumes:
  db-data:
    name: "my-app-data"

참고자료