「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
Dockerイメージを作成するファイル。
基本構文
# コメント {命令} {引数}
# | 命令 | 説明 |
1 | FROM | 以降の命令で使う ベース・イメージ を指定する。 1行めを FROM 命令で指定する必要がある。 |
2 | MAINTAINER | 生成するイメージの Author (作者)フィールドを指定する。 |
3 | RUN | 2つの形式があり何れもコマンドを実行する |
4 | CMD | RUNと似ていて、3つの形式があり、コンテナ実行時のデフォルトを提供する。 |
5 | LABEL | イメージにキー・バリューのメタデータを追加する。 |
6 | EXPOSE | 特定のコンテナが実行時にポートをリッスンすることを Docker に伝える。 |
7 | ENV | 環境変数と値をセットできる(1つ、若しくは複数)。 |
8 | ADD | ファイルやディレクトリをコピーする。 |
9 | COPY | ADDと似ているが、リモート、自動解凍の機能が無い。 |
10 | ENTRYPOINT | CMDと同様、2つの形式があり、CMDと連携して使われる。 |
11 | VOLUME | 指定した名前でマウントポイントを作成し、 他から外部マウント可能なボリュームにする。 |
12 | USER | RUN、CMD、ENTRYPOINTの実行アカウントを指定する。 |
13 | WORKDIR | 作業ディレクトリ指定する(ENVを併用できる)。 |
14 | ARG | docker build コマンドで使う変数、フラグを定義する。 |
15 | ONBUILD | 次のビルドで実行するコマンドをイメージに仕込むことができるようになる。 要するに,親DockerfileのDockerfileコマンドを子Dockerfileのビルド時に実行できる。 |
16 | STOPSIGNAL | コンテナを終了時の、システム・コール・シグナルを設定する。 |
17 | HEALTHCHECK | ヘルスチェックを行う。 |
18 | SHELL | デフォルトのシェルを上書きする。cmd と powershell を sh に変更可能にする。 |
「#」行コメントのヘッダ。
LLBを出力するプログラム(フロントエンド)の
コンテナイメージのreference文字列を指定。
# syntax = tonistiigi/pack
特殊な操作を行うオプション
# ディレクティブ=値
環境変数の文字列に置換する。
${variable_name}
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim AS base WORKDIR /app FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src COPY ["ConsoleApp1/ConsoleApp1.csproj", "ConsoleApp1/"] RUN dotnet restore "ConsoleApp1/ConsoleApp1.csproj" COPY . . WORKDIR "/src/ConsoleApp1" RUN dotnet build "ConsoleApp1.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "ConsoleApp1.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "ConsoleApp1.dll"]
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build WORKDIR /app # copy csproj and restore as distinct layers COPY dotnetapp/*.csproj ./dotnetapp/ COPY utils/*.csproj ./utils/ WORKDIR /app/dotnetapp RUN dotnet restore # copy and publish app and libraries WORKDIR /app/ COPY dotnetapp/. ./dotnetapp/ COPY utils/. ./utils/ WORKDIR /app/dotnetapp RUN dotnet publish -c Release -o out # test application -- see: dotnet-docker-unit-testing.md FROM build AS testrunner WORKDIR /app/tests COPY tests/. . ENTRYPOINT ["dotnet", "test", "--logger:trx"] FROM mcr.microsoft.com/dotnet/core/runtime:3.0 AS runtime WORKDIR /app COPY --from=build /app/dotnetapp/out ./ ENTRYPOINT ["dotnet", "dotnetapp.dll"]
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"] RUN dotnet restore "WebApplication1/WebApplication1.csproj" COPY . . WORKDIR "/src/WebApplication1" RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "WebApplication1.dll"]
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build WORKDIR /app # copy csproj and restore as distinct layers COPY *.sln . COPY aspnetapp/*.csproj ./aspnetapp/ RUN dotnet restore # copy everything else and build app COPY aspnetapp/. ./aspnetapp/ WORKDIR /app/aspnetapp RUN dotnet publish -c Release -o out FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime WORKDIR /app COPY --from=build /app/aspnetapp/out ./ ENTRYPOINT ["dotnet", "aspnetapp.dll"]
...
...