こんにちは、フルスタックエンジニアの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文字が一致する名前のファイルやディレクトリを除外。 |
dockerignoreとは?まとめ
今回の記事では、dockerignoreについて解説しました。dockerignoreを有効に使って、ビルドの時間を短縮してみましょう!
当ブログでは、このようなITに関する記事を発信しているので興味のある方は引き続きご覧ください。