.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

詳細

.NET Core アプリケーションのコンテナ化をツールに頼らず手動で行う。

Dockerファイルの作成

プロジェクト・ルートに Dockerfile を作成

ソース

dockerfile# ビルドステージ
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src

# プロジェクト・ファイルをコピーして依存関係を復元
COPY ["MyApp.csproj", "."]
RUN dotnet restore "./MyApp.csproj"

# ソースコードをコピーしてビルド
COPY . .
RUN dotnet build "MyApp.csproj" -c Release -o /app/build

# 発行ステージ
FROM build AS publish
RUN dotnet publish "MyApp.csproj" -c Release -o /app/publish /p:UseAppHost=false

# 実行ステージ(軽量イメージ)
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final
WORKDIR /app
EXPOSE 8080
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]

解説

※ マルチステージ・ビルドという手法を使っている。

※ COPYコマンドのポイント

.dockerignoreの作成

ソース

**/bin/
**/obj/
**/out/
.git/
.vs/
*.user

解説

不要なファイルをビルドコンテキストから除外。

Dockerコマンドで実行

準備

実行

Dockerコマンドによるコンテナ起動

docker run -d -p 8080:8080 --name myapp myapp:latest

Dockerコンポーズ

プロジェクト・ルートに docker-compose.yml を作成

例1

最も簡潔な例

version: '3.8'

services:
  ap:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - ConnectionStrings__Default=Server=db;Database=MyDb;...
    depends_on:
      - db

  db:
    image: mcr.microsoft.com/mssql/server:2022-latest
    environment:
      - SA_PASSWORD=YourPassword123!
      - ACCEPT_EULA=Y
    ports:
      - "1433:1433"

例2

2つのファイルを使用する場合

※ ネットワークはコマンドで作成してファイル中は全て「external: true」にすると起動順は任意になる。

docker network create --driver bridge shared-net

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS