Docker Composeとボリュームで遊んでいます
version: '2'
services:
php-Apache:
env_file:
- dev_variables.env
image: reypm/php55-dev
build:
context: .
args:
- PUID=1000
- PGID=1000
expose:
- "80"
- "9001"
extra_hosts:
# IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts)
- "dockerhost:xxx.xxx.xxx.xxx"
volumes_from:
- volumes_source
volumes_source:
image: tianon/true
volumes:
- ../:/var/www
volumes_data:
image: tianon/true
volumes:
- ./data/sessions:/sessions
次の事実を見てみましょう。
~/var/www
/var/www
の下のホストからデータを書き込む必要があります私はドキュメントを読んだことがあります here .
ホスト上のデータをコンテナと共有したいのですが、上記のdocker-compose.yml
ファイルが正しいか、必要なものを実現するために何を変更する必要があるかさえわかりません。 docker run
のみを使用してそれを行う方法は知っていますが、Docker Composeの手がかりはありませんか?
これを機能させるのに役立つことがありますか?
更新:これで遊ぶ
docker-compose.yml
ファイルに次の行を追加しました。
volumes_from:
- volumes_source
そして、docker-compose up
をもう一度実行しますが、これは結果です:
php55devwork_volumes_data_1 exited with code 0
php55devwork_volumes_source_1 exited with code 0
何が起こっているのか、なぜエラーが発生しているのかわかりません。
「データコンテナ」を定義しようとしているようです。このパターンは以前は一般的でしたが、docker volume
システムがDocker 1.9に追加された後は必要ありません( https://github.com/docker/docker/blob/master/CHANGELOG.md #190-2015-11- )
使用しているこのイメージtianon/true
は、「true」コマンドを実行するように設計されています。このコマンドは、終了コード0を返して終了するだけです。これが、コンテナが終了したと表示される理由です。
データコンテナを使用する代わりに、名前付きボリュームを使用します。たとえば、データコンテナを使用した次のアプローチ:
docker create --name data-container -v /sessions tianon/true
docker run --volume-from data-container -d myapp
これになります:
docker volume create --name sessions
docker run -v sessions:/sessions -d myapp
構成を使用しているため、volumesキーを使用してボリュームを定義できます。
version: '2'
services:
php-Apache:
env_file:
- dev_variables.env
image: reypm/php55-dev
build:
context: .
args:
- PUID=1000
- PGID=1000
expose:
- "80"
- "9001"
extra_hosts:
# IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts)
- "dockerhost:xxx.xxx.xxx.xxx"
volumes:
- sessions:/sessions
- docroot:/var/www
volumes:
sessions:
driver: local
docroot:
driver: local
詳細と例はこちらにあります: https://docs.docker.com/compose/compose-file/compose-file-v2/
ただし、このボリュームデータをコンテナとホスト間で共有することもお勧めします。その場合、データコンテナも名前付きボリュームも必要ありません。ホストボリュームを直接指定することができます。
version: '2'
services:
php-Apache:
env_file:
- dev_variables.env
image: reypm/php55-dev
build:
context: .
args:
- PUID=1000
- PGID=1000
expose:
- "80"
- "9001"
extra_hosts:
# IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts)
- "dockerhost:xxx.xxx.xxx.xxx"
volumes:
- ./data/sessions:/sessions
- ../:/var/www