Dockerfileに名前を付ける方法


140

Dockerfileに名前を付ける方法がわかりません。GitHubの多くDockerfileはファイル拡張子なしで使用します。名前と拡張子を付けますか?もしそうなら?それとも私はそれらを呼び出すだけDockerfileですか?

回答:


165

hub.docker.comでオートビルダーを使用する場合は、dockerfileの名前を変更しないでください。Dockerファイルには拡張子を使用せず、ヌルのままにします。ファイル名は次のようにする必要があります:(まったく拡張子なし)

Dockerfile

ただし、以下のようにすることもできます...

dev.Dockerfileuat.Dockerfileprod.Dockerfileなど

VS Codeでは使用でき<purpose>.Dockerfile、それに応じて機能します。


83
同じディレクトリに複数のDockerfileがある場合はどうですか?
Visgean Skeloru 2016

@VisgeanSkeloru面倒なことはありませんが、必要に応じて別のディレクトリに配置することもできますが、どこを見ても、すでに確立された規則であるようです
orustammanapov

2
@VisgeanSkeloru同じディレクトリに複数のDockerfileを置かないでください。含まれているディレクトリがコマンドのコンテキストになりますdocker build。つまり、別のイメージのdockerfileが変更された場合、各イメージが不必要に再構築されます。
トーマス

6
@Thomasは、Dockerコンテキストが "../some-common-stuff"にアクセスできないため、複数のDockerfileを同じディレクトリに配置して、別のコンテナー間で共有する必要がある場合があります
Devis L.

「D」は大文字にする必要がありますか、それとも問題ありませんか?
NoName

51

dev.Dockerfiletest.Dockerfilebuild.Dockerfileなど

VSコードで使用する<purpose>.Dockerfileと、正しく認識されます。


27

Dockerfile(拡張子なし)を含むコンテナーごとのディレクトリが必要です。例えば:

  /db/Dockerfile
  /web/Dockerfile
  /api/Dockerfile

ビルドするときにディレクトリ名だけを使用すると、DockerはDockerfileを見つけます。例えば:

docker build -f ./db .

あなたの例から3つのコンテナを構築しますか?
alvas 2017

@alvasはい、そうです
garryp

4
多くの場合十分ではありません。Dockerはファイルを確認できません。たとえば、ターゲット、ビルドなど
Cyva

次に、この3つのdockerファイルをdocker-composeコマンドを使用して一度に実行できますか?
Yogi Ghorecha

16

hub.docker.comでオートビルダーを使用する場合は、にする必要があります Dockerfile。だからそこに:)


3
質問の文脈はもっと広いと思います。おそらく、この回答をより完全にするために、autobuilderを使用していない個人のための追加情報を含めることができます。
Josh Habdas

16

これは本当のようですが、個人的にはデザインが悪いようです。確かに、デフォルトの名前(拡張子付き)がありますが、他の名前を許可し、コマンドのdockerファイルの名前を指定する方法があります。

拡張機能を使用すると、アプリケーションをその拡張機能の種類に関連付けることができるので便利です。MacOSXでDockerfileをクリックすると、それはUnix実行可能ファイルとして扱われ、実行されます。

Dockerファイルに拡張子が付いている場合、テキストエディターアプリケーションなどの特定のアプリケーションでそれらを起動するようにOSに指示できます。よくわかりませんが、現在の動作はファイルのアクセス許可に関連している可能性もあります。


15

同じディレクトリに2つのDockerfileを作成しました。

# vi one.Dockerfile
# vi two.Dockerfile

両方のDockerfileをビルドするには、

# docker build . -f one.Dockerfile
# docker build . -f two.Dockerfile

注:現在の作業ディレクトリにいる必要があります。


10

名前と拡張子を付けますか?もしそうなら?

Dockerfileには任意の名前を付けることができます。デフォルトのファイル名はDockerfile(拡張子なし)であり、デフォルトを使用すると、コンテナーでの作業中にさまざまなタスクを簡単に実行できます。

特定の要件に応じて、ファイル名を変更できます。たとえば、複数のアーキテクチャ用にビルドしている場合、resin.ioチームがHAProxyコンテナに対してマルチコンテナARMの例を実行したときに、アーキテクチャを示す拡張機能を追加できます。

Dockerfile.aarch64
Dockerfile.amd64
Dockerfile.armhf
Dockerfile.armv7hf
Dockerfile.i386
Dockerfile.i386-nlp
Dockerfile.rpi

提供されている例では、各Dockerfileは異なるアーキテクチャ固有のアップストリームイメージからビルドされます。ビルドに使用する特定のDockerfile は、コマンドラインを使用してコンテナーをビルドするときに--file, -fオプションを使用して指定できます


1
拡張機能を使用してアーキテクチャー(またはその他)を示すのが好きです。他のいくつかの回答とは異なり、すべてのDockerfileは、大きくて雑然としたディレクトリで見つけるのは非常に簡単です。彼らは自然に一緒に並べ替えます。
マイクシェリル「キャットリコール」、

3

DockerfileDockerファイルが1つ(ディレクトリごと)しかない場合に適しています。同じディレクトリに複数のdockerファイルが必要な場合は、必要な標準を使用できます-正当な理由がある場合。最近のプロジェクトでは、環境が十分に異なるため、AWS dockerファイルとローカル開発環境ファイルがありました。

Dockerfile Dockerfile.aws


この方法がアーキテクチャの指定にも使用されるのを見てきました。たとえば、のDockerfile.armv7hf隣にを配置しDockerfile.i386ます。
Josh Habdas

1

Dockerfile(カスタム名とフォルダー):

   docker/app.Dockerfile
   docker/nginx.Dockerfile

ビルド:

   docker build  -f ./docker/app.Dockerfile .
   docker build  -f ./docker/nginx.Dockerfile .
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.