Docker

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

プログラミング

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

dockerignoreってなに?

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

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

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

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

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
大手メーカのIT部門→上場ベンチャーでフルスタックエンジニアやってます。エンジニア歴は8年目。 サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。 AI、ARも勉強中です! youtubeでも技術ネタを発信していきます。↓のアイコンよりご覧ください!

UdemyでIT講座をチェック!

  • セールだと1500円前後!
  • 無料サンプル講義動画・無料講義動画あり!
  • 気に入らなければ30日間返金保証!