2017-11-02 5 views
2

ホストからボリュームへのフォルダとしてフォルダをマウントしようとしています。私はこのマウントプロセスがどの段階で完了したのか疑問に思っています。ビルド段階であると予想しますが、私のフォルダはマウントされていないようです。Dockerがホストボリュームからの相対フォルダを作成します

フォルダ構造:

-> app 
    |-> requirements.txt 
- docker 
    |-> web 
    |-> Dockerfile 
-> docker-compose.yml 

ドッキングウィンドウ-compose.ymlには以下が含まれています。

version: '2' 

services: 
    web: 
    build: ./docker/web 
    volumes: 
     - './app:/myapp' 

コンテナのドッキングウィンドウのファイル:

FROM ubuntu:latest 
WORKDIR /myapp 
RUN ls 

私はを取り付けていますアプリケーションディレクトリからホストへ/myappがコンテナ内にある場合、ビルドプロセスは作業ディレクトリを設定してlsを実行し、reuqiremetns.txtファイルがそこに存在することを期待しています。

私は間違っていますか?

ドッカー - 構成v1.16.1、ドッカーv1.16.1。私は窓のためのドッカーを使用しています。

答えて

1

あなたのrequirements.txtファイルは、コンテキストによって取得されず、構築時にrequirements.txtが存在しないため、ビルド時にイメージにコピーされません。

ボリュームは、作成時ではなく、コンテナ作成時にマウントされます。ファイルをDockerファイル内で使用できるようにするには(たとえば、ビルド時に)、そのファイルをコンテキストに含めてコピーして利用可能にする必要があります。ここドッカードキュメントから

https://docs.docker.com/engine/reference/builder/

The first thing a build process does is send the entire 
context (recursively) to the daemon 

それは二つの問題だ:あなたのDockerfileは別のディレクトリ構造であるので、あなたは、あなたのビルドコンテキストとの要件のファイルを送信していない

  • したがって、は、ビルド時に利用できません。
  • lsコマンド()を実行する前に、ファイルをイメージにコピーしていません。)

ビルド時にrequirements.txtが利用できるように、そしてあなたのlsあなたはbuild時に予想される動作を確認する必要があり実行する前に、あなたのDockerfileにCOPYコマンドを追加し、あなたのディレクトリ構造を変更することができます。

関連する問題