2017-02-14 6 views
14

dockerを使用してNginx/PHP FPMセットアップを作成しようとしています。バージョン3のボリューム構文/変更に問題があります。docker-versions 3と同等のボリュームを作成します

マイDockerfile

FROM php:7-fpm 
VOLUME /var/www/html 

マイdocker-compose.yml

version: "3" 
services: 
    php: 
    build: . 
    volumes: 
     - ./html:/var/www/html 
    web: 
    image: nginx 
    links: 
     - php 
    ports: 
     - "8888:80" 
    volumes: 
     - php:/var/www/html 
     - ./default.conf:/etc/nginx/conf.d/default.conf 
volumes: 
    php: 

私は./htmlindex.phpファイルを追加すると、私はhttp://localhost:8888に行くことによってそれを見ることができますが、(CSSのような)任意の静的ファイルNginxがそのコンテナ内のものを見つけることができないので、404を返します(/var/www/htmlはnginxコンテナでは空です)。バージョン3ドッカーの作成ファイルには、もはやvolumes_fromがありません。これは基本的に私が複製しようとしているものです。

これをバージョン3で使用するにはどうすればよいですか?

volumes: 
    php: 

2)volumeセクションを定義するコンテナ間でファイルを共有するための「名前付きのボリュームを」使用するための

答えて

10

あなたはボリューム名にYMLファイルのトップレベルに

1)volumes:セクションを定義し、定義する必要があります(株マウントします)あなたがやったように第一の容器

web: 
    volumes: 
     - php:/var/www/html #<container_name>:<mount_point> 

3)上の第2のコのvolumeセクションを定義ntainer(シェアからマウントします)

php: 
    volumes: 
    - php:/var/www/html 

4)(オプション)あなたはlocal-persistドッキングウィンドウプラグインを使用することができ、ホストマシン上のボリュームデータを格納する必要がある場合。データを格納するドッカーボリュームドライバとパスを指定できます。あなたがphpコンテナのボリューム名を定義し忘れたあなたの場合

volumes: 
    php: 
    driver: local-persist 
    driver_opts: 
     mountpoint: /path/on/host/machine/ 

。ただ、

php: 
    build: . 
    volumes: 
     - php:/var/www/html 

php: 
    build: . 
    volumes: 
     - ./html:/var/www/html 

を交換し、ローカルの使用方法 `の.html /`ファイルは、この設定で `は/ var/www /のhtml`にロードされますでしょうか?ドッカープラグイン

+0

を永続 – Rob

+0

申し訳ありませんが、私はボリューム外付けが必要であることを忘れました。 [local-persist](https://github.com/CWSpear/local-persist)ドッカープラグインを使用して同じ結果を得ることができます。答えを更新します。 –

+0

ローカルフォルダをコンテナにマウントする場合、名前付きボリュームの利点は何ですか?言い換えれば、「v3の 'volumes_from'には本当の意味がないのですか? v2では、複数のマウントのラッパーとしてvolumes_fromを使用できるので、マウントを一度定義してから、他のサービスの同じマウントに 'volumes_from 'を使って" include "します。あなたの答えを正しく理解すれば、v3では各サービスごとにそれぞれのマウントを個別に定義する必要がありますか? – delf

関連する問題