DockerfileのCOPYでファイルやディレクトリごとコンテナにコピーする

Dockerfileでファイルやディレクトリごとコンテナにコピーしたい

今回は、ホスト側からコンテナにファイルやディレクトリをそのままコピーして転送する方法を紹介します。

この記事を書いた人

@takasqr アプリケーション開発が大好きなエンジニア。Vue、Swift、Electrom などでアプリを作って公開している。AWS や Firebase などのクラウドサービスも好き。

ADDとCOPYという2つのコマンド

Dockerfileには親のOSからコンテナにファイルを送るコマンドが2種類あります。 それがADDとCOPYというコマンドです。

COPYはファイルをコンテナの中にコピーするだけですが、ADDはtarファイルの展開機能もあります。なのでファイルをコピーするだけならCOPYを使用した方が、コードの意味が推測しやすくなるので推奨されているようです。

今回はCOPYの使用方法を紹介します。

開発環境

Docker version 18.06.1-ce

1つのファイルをコピーする

ます、Dockerfileがあるディレクトリの中にコピーしたいファイルを配置します。

その上でDockerfileに記述します。

COPY test.sh /home/test-user/

このような形で送りたいファイルの後に送りたいコンテナの中のパスをします。 例では、test.shというファイルをコンテナの/home/test-user/というディレクトリの中に配置するコードです。

ディレクトリごとコピーする

ディレクトリの中を全部コンテナの中にコピーしたい場合は、

COPY test/ /home/test-user/test/

のようにファイルではなく、フォルダを指定するとできます。 例では、testというディレクトリをコンテナの/home/test-user/というディレクトリの中に配置するコードです。

さいごに

コンテナにコピーしたいファイルが複数ある場合は、ファイルではなくディレクトリごと指定する方が効率的にDockerfileを記述することができます。

Dockerfile リファレンス | Docker ドキュメント日本語化プロジェクト