20

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

ここでドキュメントを読みましたが、データ ボリュームとホスト データの処理方法が明確ではありません。

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

何が起こっているのか、なぜエラーが発生するのかわかりません。

4

1 に答える 1

31

「データコンテナ」を定義しようとしているようです。以前はこのパターンが一般的でしたdocker volumeが、Docker 1.9 でシステムが追加されてからは必要なくなりました ( https://github.com/docker/docker/blob/master/CHANGELOG.md#190-2015-11-03 ) 。

使用しているこのイメージは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

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:
            - 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
于 2016-10-12T18:29:45.347 に答える