Dockerfile の要素を調べる

完了

Dockerfile は、Docker イメージのビルドに使用される一連の命令を含むスクリプトです。 Dockerfile には通常、次の情報が含まれます。

  • 新しいイメージを作成するために使用する基本イメージまたは親イメージ
  • ベース OS を更新してその他のソフトウェアをインストールするためのコマンド
  • 開発したアプリケーションなど、含めるビルド成果物
  • ストレージやネットワーク構成など、公開するサービス
  • コンテナーが起動されるときに実行するコマンド

Dockerfile を作成する

Dockerfile を作成する最初の手順は、アプリケーションの基盤として機能する基本イメージを選択することです。 たとえば、.NET アプリケーションをビルドする場合、Microsoft .NET イメージをベースとして選択できます。

# Use the .NET 6 runtime as a base image
FROM mcr.microsoft.com/dotnet/runtime:6.0

# Set the working directory to /app
WORKDIR /app

# Copy the contents of the published app to the container's /app directory
COPY bin/Release/net6.0/publish/ .

# Expose port 80 to the outside world
EXPOSE 80

# Set the command to run when the container starts
CMD ["dotnet", "MyApp.dll"]

各行を見て、その機能を確認しましょう。

  • FROM mcr.microsoft.com/dotnet/runtime:6.0: このコマンドは、.NET 6 アプリを実行するために必要な .NET 6 ランタイムに基本イメージを設定します。
  • WORKDIR /app: 作業ディレクトリを /app に設定します。アプリ ファイルがコピーされる場所です。
  • COPY bin/Release/net6.0/publish/ .: 発行されたアプリの内容をコンテナーの /app ディレクトリにコピーします。 .NET 6 アプリが構築され、bin/Release/net6.0/publish ディレクトリに公開されているとします。
  • EXPOSE 80: 既定の HTTP ポートであるポート 80 を外部に公開します。 アプリが別のポートで待ち受けしている場合、この行を適宜変更します。
  • CMD ["dotnet", "MyApp.dll"]: コンテナーの起動時に実行するコマンド。 今回、アプリの DLL ファイル (MyApp.dll) の名前で dotnet コマンドを実行しています。 アプリの名前とエントリ ポイントが一致するよう、この行を変更します。

Dockerfile ファイルの仕様については説明しません。 詳細については、Dockerfile のリファレンスを参照してください。 最終的なコンテナー イメージを作成するときに、これらの各ステップでキャッシュされたコンテナー イメージが作成されます。 これらの一時的なイメージは、それまでのものの上に階層化され、すべてのステップが完了すると 1 つのイメージとして表されます。

リソース