2016-06-13 6 views
9

私はDockerfileで次のコマンドを試しました:COPY * /そして結果には驚いています。純粋なドッカーコードがglobからディレクトリをたどってきて、各ファイルをターゲットディレクトリにダンプしながら、ディレクトリ構造を慎重に無視しているようです。Dockerfileからフォルダをドッカー画像にコピーする方法は?

少なくともそれは私がthis ticketを理解する方法であり、確かに私が得た結果に対応しています。

私は、この動作がまだ存在する唯一の理由は、これが他のやり方で行われていなければならないということです。しかし、非常に小さな脳の熊にとって、どのように理解するのは簡単ではありません。

答えて

6

mentioned in your ticketとして:あなたはCOPY files/dir files/file1 files/file2 files/file /test/に展開COPY files/* /test/を持って


COPYコマンド(例:COPY files/dir /test/)に分割すると、COPYは、各引数dirの内容をコピー先のディレクトリにコピーします。 arg dir自体ではなく内容です。

私は、COPYがトップレベルのディレクトリを保持していませんが、今のところそのようになっているという事実には驚きません。

ので、下位互換性を保つの名の下に、それはCOPY/ADDディレクトリ構造にはできません。

唯一の回避策は、ターゲットディレクトリ構造を構築するための一連のRUN mkdir -p /x/y/zであり、その後に一連のdocker COPY(各フォルダに1つずつ)が続きます。

2

ADDの代わりにCOPYを使用してください。ディレクトリsrcのすべてをホストからディレクトリdstにコピーするとします。

ADD src dst 

注:bは自動的にコンテナに作成されます。

+2

「b」とは何ですか?また、https://github.com/docker/docker/issues/18396では、ADDはサブフォルダを作成しないことを示しています。 – VonC

+0

あなたの答えははっきりしていませんが、私はあなたが言っていることを理解し、上記の答えを見つけました。それはうまくいく。 –

6

@Voncのように、今のようなコマンドを追加する可能性はありません。唯一の回避策は、フォルダを作成し、そのフォルダにコンテンツを追加することです。

# add contents to folder 
ADD src $HOME/src 

はあなたのディレクトリにSRCというフォルダを作成し、このフォルダにあなたのSRCの内容を追加します。

関連する問題