docker-compose.yml内のトップレベルのvolumes
基本的な使い方
code:docker-compose.yml
services:
app1: # コンテナ名その1
build: ./app1 # ホスト内のDockerfileが入ったディレクトリを指定する
volumes:
- db_data:/app/tmp # ボリューム名:コンテナ内ディレクトリ
app2: # コンテナ名その2
build: ./app2 # ホスト内のDockerfileが入ったディレクトリを指定する
volumes:
- db_data:/app/tmp # ホストディレクトリ:コンテナ内ディレクトリ
depends_on:
- app1 # app1が起動してからapp2を起動する
volumes: # Dockerボリュームを定義する。ここで定義したものは、コンテナが削除されてもデータが消えない。
db_data: # ボリューム名
例:
code:Dockerfile
FROM ubuntu
WORKDIR /app
ファイルを用意したら以下のコマンドを実行する
$ docker compose up --build
ボリュームを再生成するか聞かれたらyと入力してEnterを入力する
上記の例ではわかりにくいが、app1とapp2コンテナにおける/app/tmpは中身が同じになる
https://gyazo.com/408ad28929c9be8bab87f5afa246d9e1
ホスト側のディレクトリと同期する
volumesの定義を以下のように変更する
code:docker-compose-2.yml
volumes: # Dockerボリュームを定義する。ここで定義したものは、コンテナが削除されてもデータが消えない。
db_data: # ボリューム名
driver: local # ボリュームドライバにlocalドライバを指定する
driver_opts: # ドライバオプション
type: none # ドライバのタイプを指定するオプション
device: ./data # ホストディレクトリのパス
o: bind # bind mountを指定するオプション
そして、予め./dataディレクトリを作成しておく
参考:
ボリュームドライバについて
ボリュームドライバのオプションについて
オプションの種類について解説している一次資料は見つからなかったMijinko_SD.icon