19

名前付きデータ ボリューム (データ コンテナーではない) の使用方法について混乱しています。

docker 構成ファイルapp_srcを使用してマウントされた名前付きデータ ボリュームがあります。/usr/src/appただし、ソース コードを (ローカルで) 変更した後、イメージをビルドしてもボリュームが更新されません。

私はそのようにイメージを構築しています、

docker-compose -f development.yml buildそしてそれを実行しdocker-compose -f development.yml up -dます。

ボリュームが変わらないことを確認するために、実行中のコンテナにアタッチしましたが、ソース コードは更新されていません。

これが私のdocker構成ファイルdevelopment.ymlDockerfile私のwebサービスです。バージョン: '2'

services:
  web:
    restart: always
    build: ./web
    expose:
      - "8000"
    volumes:
      - app_src:/usr/src/app
    links:
      - postgres:postgres
    env_file: development.env
    command: ./start_web.sh

volumes:
   app_src: {}


FROM python:3.4.4

WORKDIR /usr/src/app
RUN rm -rf /usr/src/app/*
COPY . /usr/src/app/
RUN pip install --no-cache-dir -r requirements.txt

そのようにホストをマウントすることで機能させることができました。

volumes:
    - ./web/src:/usr/src/app

Docker 1.11.2を実行しているUbuntu 16.04を使用しています。私の理解は間違っていますか?私はドキュメントを見てみましたが、ボリュームを本当によく説明しているものを見つけることができました.

4

3 に答える 3

2

ボリュームを同じ場所に何度もマウントします。1回目はコンテナがホストファイルシステムにデータを保存し、2回目はホストファイルシステムからコンテナにデータを上書きします。docker-compose ファイルからボリューム マウントを削除します

volumes: - ./web/src:/usr/src/app #remove this!

ここで追加情報を入手できます

$ docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py

このコマンドは、ホスト ディレクトリ /src/webapp を /opt/webapp のコンテナーにマウントします。コンテナーのイメージ内にパス /opt/webapp が既に存在する場合、/src/webapp マウントはオーバーレイしますが、既存のコンテンツは削除しません。マウントが削除されると、コンテンツに再びアクセスできるようになります。これは、マウント コマンドの予想される動作と一致しています。

于 2016-07-18T18:10:50.893 に答える