yosaku_ibs
@yosaku_ibs

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【dockerチュートリアル】COPY..の意味はなんですか?

解決したいこと

「dockerチュートリアル第2部〜アプリのコンテナーイメージのビルド〜」に明記されているDockerfileのソースコード内のCOPY . .はどういう意味なのでしょうか?

(親ディレクトリをコピーしてるのでしょうか?)
(直前の行でWORKDIR /appとなってるので、ルートディレクトリをコピーするという意味なのでしょうか?)

ソースコード

# syntax=docker/dockerfile:1
FROM node:12-alpine
RUN apk add --no-cache python2 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000


自分で試したこと

dockerドキュメントはじめ、ターミナルコマンドなど思いつく限り調べましたが
解決出来ませんでした。

以上、お手数ではございますが
もしご存知の方がいらっしゃいましたら
ご教示の程よろしくお願い申し上げます。

0

1Answer

調べた内容は具体的に書いてください。 COPY のドキュメントは読みましたか?

0Like

Comments

  1. @yosaku_ibs

    Questioner

    @uasi様

    お世話になります。
    >調べた内容は具体的に書いてください。
    •dockerdocsのCOPYの部分の確認。
    •「ターミナル COPY」でのGoogle検索後、ヒットしたサイトを手当たり次第確認。

    ご紹介頂いたリファレンスは既に確認済みです。
    しかしCOPY..がなにを意味するのか読み解けませんでした。
    ご紹介頂いたリファレンスのどの部分に記載があるのかご教示頂けませんでしょうか?

    お手数おかけし誠に申し訳ございませんが、よろしくお願い申し上げます。
  2. > •dockerdocsのCOPYの部分の確認。
    > •「ターミナル COPY」でのGoogle検索後、ヒットしたサイトを手当たり次第確認。

    調べたページのリンク、読んだ文章、読んだ中で特に理解できなかった単語や概念なども質問に書いてください。そうしないとこの回答のように確認済みのページを提示して無駄足になりますので。

    > ご紹介頂いたリファレンスのどの部分に記載があるのか

    リンクした場所のすぐ下に記載があります。

    > COPY [--chown=<user>:<group>] <src>... <dest>

    > COPY 命令は <src> からファイルやディレクトリを新たにコピーして、コンテナー内のファイルシステムのパス <dest> に追加します。

    > <src> には複数のソースを指定することが可能です。 ソースとしてファイルあるいはディレクトリが指定されている場合、そのパスはビルドコンテキストからの相対パスとして解釈されます。
  3. コピーすることは理解されているようなので、おそらく分からないのは「. .」の部分だと思いますが。

    1つ目の「.」は <src> (コピー元)のパス、2つ目の「.」は <dest> (コピー先)のパスです。パスとしての「.」はカレントディレクトリを表します。

    よって「COPY . .」は「ビルドコンテキストのカレントディレクトリ以下にあるファイルやディレクトリをコンテナのカレントディレクトリ以下にコピー」となります。

    ここでビルドコンテキストとは、ざっくり言えば docker build コマンドを実行したディレクトリのことです。コンテナのカレントディレクトリは WORKDIR 命令で変更でき、 COPY 命令の時点では /app ディレクトリに設定されています。

    まとめると、ご質問のコードの「COPY . .」は「docker build コマンドを実行した場所にあるファイルやディレクトリをコンテナ内の /app 以下にコピー」します。
  4. @yosaku_ibs

    Questioner

    @uasi様

    >調べたページのリンク、読んだ文章、読んだ中で特に理解できなかった単語や概念なども質問に書いてください。そうしないとこの回答のように確認済みのページを提示して無駄足になりますので。
    →誠に申し訳ございませんでした。いまいち掴みどころがわからず、今の私にはこの説明が精一杯でした。今後は可能な限り明記するように致します。

    ご丁寧に説明下さりありがとございます。
    ご説明頂いてからリファレンスのテンプレ再度見返すと、納得できました。
    ありがとうございます。

    質問として明記する内容に不足があり、ご迷惑おかけしてしまい誠に申し訳ございませんでした。
    以上、御礼申し上げます。


  5. こちらこそ口調がきつくなってしまって申し訳ないです。迷惑だとは思っていないので大丈夫ですよ。ただ質問の時点で分かることと分からないことを整理してはっきり書いておくと、回答もつきやすいですし、自分でも悩みの原因に気づきやすくなってお互いのためになります。ぜひ心がけてみてください。

Your answer might help someone💌