Docker

dockerignoreとは?Dockerfileでコピーしたくないファイルやディレクトリを指定する

プログラミング

こんにちは、フルスタックエンジニアのryuです。

dockerignoreってなに?

「dockerignoreってなに?」とお困りの方!今回の記事ではdockerignoreについて解説します。

dockerignoreとは、DockerfileのCOPYコマンドでコピーしたくないファイルやディレクトリを指定するファイルのことです。

Dockerを使っている方やDocker初心者の方必見の内容です!

では、dockerignoreについて詳しく解説します!

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

dockerignoreとは?

コピーしたくないファイルやディレクトリを指定するファイル

dockerビルドに必要ない(tarの中に入れたくない)ファイルは.dockerignoreファイルに記載します。

Dockerfileからイメージをビルドする場合、Dockerfileの存在するディレクトリの中身はtarで固められdaemonへと送られます。DockerfileのCOPYコマンドを使用して、必要なファイルをコピーします。
dockerignoreを作成することで、ビルド時間の短縮、docker imageサイズの最適化などの効果があります。

dockerignoreはビルドコンテキストルートにある.dockerignoreファイルしか読み込まれません。サブディレクトリにある.dockerignoreファイルは読み込まれません。そのため、.dockerignoreファイルはビルド時にルートとなるディレクトリに配置しておきましょう。

dockerignoreの書き方

dockerignoreの例

では、実際にdockerignoreを作成してみましょう。dockerignoreは「.dockerignore」というファイル名で作成します。

ファイルの中身は以下のように記述します。

# コメント
*/temp*
*/*/temp*
temp?

例えば、node_modulesをコピーしたくない場合は、以下のように記述します。

node_modules

このようにDockerのビルドに不必要なファイルやディレクトリは、「.dockerignore」に記述します。

dockerignoreの文法

ルール挙動
#コメントコメントとして無視する
*/temp*root 以下のあらゆるサブディレクトリ内で、 temp で始まる名前のファイルやディレクトリを除外。
*/*/temp*root から2階層以下のサブディレクトリ内で、 temp で始まる名前のファイルやディレクトリを除外。
temp?ルートディレクトリ内で、 temp と1文字が一致する名前のファイルやディレクトリを除外。
引用::Dockerfile リファレンス — Docker-docs-ja 20.10 ドキュメント

dockerignoreとは?まとめ

今回の記事では、dockerignoreについて解説しました。dockerignoreを有効に使って、ビルドの時間を短縮してみましょう!

当ブログでは、このようなITに関する記事を発信しているので興味のある方は引き続きご覧ください。

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
大手企業→上場ベンチャー→スタートアップでエンジニアをしていました。 インフラエンジニア歴10年以上。 Linuxやネットワークの学習ができるサービスInfraAcademyを運営中。
RELATED POST