2017-03-16 6 views
0

こんにちは、私はこの状況に陥っています。ボリュームのソースを転送するためのCOPYコマンドを含むデータコンテナを再構築してソースコードに変更を適用したいと思います。しかし、私がデータイメージを再構築してdocker-composeを再実行すると、古いコードが残ってしまい、すべてを更新する唯一の方法は、Webルートボリュームを削除して再作成することです。データコンテナから共有ボリュームを更新する

ここで、間違いはありますか?

server: 
    build: ./docker/apache 
    image: server:1.3.16 
    restart: always 
    links: 
    - fpm 
    ports: 
    - 80:80 # HTTP 
    - 443:443 # HTTPS 
    volumes: 
    - webroot:/var/www/html:ro 

fpm: 
    build: ./docker/php 
    image: fpm:1.0 
    restart: always 
    links: 
    - database 
    volumes: 
    - webroot:/var/www/html 

data: 
    build: 
    context: . 
    dockerfile: dataDockerFile 
    image: smanapp/data:1.0.0 
    volumes: 
    - webroot:/var/www/html 

volumes: 
    webroot: 

答えて

1

というボリュームwebrootがコンテナの再起動間でデータを永続化するためのものです/再構築します。ボリューム内のデータがイメージから更新されるのは、ボリュームが作成され、イメージ内のディレクトリの内容がコピーされる唯一の時間です。

volumes_fromのように見えますdataに定義されたボリュームをマウントするコンテナ。これは、ボリュームが置き換えられるように設計されたデータを共有する元の「データコンテナ」方式です。

version: "2.1" 

services: 

    server: 
    image: busybox 
    volumes_from: 
     - data 
    command: ls -l /var/www/html 

    fpm: 
    image: busybox 
    volumes_from: 
     - data 
    command: ls -l /var/www/html 

    data: 
    build: . 
    image: dply/data 
    volumes: 
     - /var/www/html 

注これはreplaced in version 3 of the compose fileをされているように、あなたが新しい機能を使用する場合は、ボリュームを再作成に固執する必要があるかもしれません。

+0

残念ながら、ドッカーの作成時に自動的に強制的にボリュームのレクリエーションを行う方法はありません。私は自分の作成ファイルのバージョンを2.1に戻すつもりだと思う。 –