docker-compose で名前付きボリュームをホストのディレクトリにマウントする


自分用メモ。

バインドマウントとは似て非なるもの。
コンテナイメージのマウント先ディレクトリにファイルが存在している場合、下記のような挙動をする。

  • バインドマウント
    • コンテナイメージのディレクトリは消失し、ホストのディレクトリがマウントされる
  • 名前付きボリューム
    • (ホスト側にファイルがない場合)コンテナイメージのファイルがマウント先ディレクトリから名前付きボリュームにコピーされた上で、ホストのディレクトリがマウントされる

docker-compose.yml

version: "3"

services:
  httpd:
    image: httpd
    ports:
      - "8180:80"
    volumes:
      - "httpd-conf:/usr/local/apache2/conf"

volumes:
  httpd-conf:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: ./conf/httpd/