events
HTTPS 経由で Docker Compose を使用して ASP.NET Core イメージをホストする
ASP.NET Core では、既定で HTTPS が使用されます。
このドキュメントでは、HTTPS を使用して構築済みのコンテナー イメージを実行する方法について説明します。
開発シナリオについては、「Docker を使用して HTTPS による ASP.NET Core アプリケーションを開発する」 をご覧ください。
このサンプルには、Docker 17.06 以降の Docker クライアントが必要です。
このドキュメントの一部の手順では、.NET Core 2.2 SDK 以降が必要です。
ドメインの運用環境のホスティングには、証明機関からの証明書が必要です。 Let's Encrypt は、無料の証明書を提供する証明機関です。
このドキュメントでは、 上で構築済みのイメージをホストするためにlocalhost
を使用します。 手順は、運用証明書の使用に似ています。
運用証明書の場合:
dotnet dev-certs
ツールは不要です。- 証明書を、手順で使用されている場所に格納する必要はありません。 サイト ディレクトリの外部の任意の場所に証明書を格納します。
次のセクションに記載されている手順では、volumes
の プロパティを使用して、コンテナーへの証明書のボリューム マウントを行います。COPY
の コマンドを使用して証明書をコンテナー イメージに追加することもできますが、推奨されません。 証明書をイメージにコピーすることは、次の理由からお勧めされません。
- 開発者証明書を使用したテストに同じイメージを使用するのが難しくなります。
- 運用証明書を使用したホスティングに同じイメージを使用するのが難しくなります。
- 証明書の公開には大きなリスクがあります。
オペレーティング システム構成については、次の手順を使用します。
証明書を生成してローカル コンピューターを構成します。
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
.NET CLI を使用した前のコマンド:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
上記のコマンドで、$CREDENTIAL_PLACEHOLDER$
をパスワードに置き換えます。
次の内容を含む docker-compose.debug.yml ファイルを作成します。
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
Docker Compose ファイルで指定されたパスワードは、証明書に使用されるパスワードと一致する必要があります。
HTTPS 用に構成された ASP.NET Core を使用してコンテナーを起動します。
docker-compose -f "docker-compose.debug.yml" up -d
証明書を生成してローカル コンピューターを構成します。
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Linux では、dotnet dev-certs https --trust
には .NET 9 SDK 以降が必要です。 .NET 8.0.401 SDK 以前の Linux の場合、証明書を信頼する方法については、Linux ディストリビューションのドキュメントをご覧ください。
上記のコマンドで、$CREDENTIAL_PLACEHOLDER$
をパスワードに置き換えます。
次の内容を含む docker-compose.debug.yml ファイルを作成します。
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
Docker Compose ファイルで指定されたパスワードは、証明書に使用されるパスワードと一致する必要があります。
HTTPS 用に構成された ASP.NET Core を使用してコンテナーを起動します。
docker-compose -f "docker-compose.debug.yml" up -d
証明書を生成してローカル コンピューターを構成します。
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
上記のコマンドで、$CREDENTIAL_PLACEHOLDER$
をパスワードに置き換えます。
次の内容を含む docker-compose.debug.yml ファイルを作成します。
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
volumes:
- ${USERPROFILE}\.aspnet\https:C:\https:ro
Docker Compose ファイルで指定されたパスワードは、証明書に使用されるパスワードと一致する必要があります。
HTTPS 用に構成された ASP.NET Core を使用してコンテナーを起動します。
docker-compose -f "docker-compose.debug.yml" up -d
ASP.NET Core では、既定で HTTPS が使用されます。
このドキュメントでは、HTTPS を使用して構築済みのコンテナー イメージを実行する方法について説明します。
開発シナリオについては、「Docker を使用して HTTPS による ASP.NET Core アプリケーションを開発する」 をご覧ください。
このサンプルには、Docker 17.06 以降の Docker クライアントが必要です。
このドキュメントの一部の手順では、.NET Core 2.2 SDK 以降が必要です。
ドメインの運用環境のホスティングには、証明機関からの証明書が必要です。 Let's Encrypt は、無料の証明書を提供する証明機関です。
このドキュメントでは、 上で構築済みのイメージをホストするためにlocalhost
を使用します。 手順は、運用証明書の使用に似ています。
運用証明書の場合:
dotnet dev-certs
ツールは不要です。- 証明書を、手順で使用されている場所に格納する必要はありません。 サイト ディレクトリの外部の任意の場所に証明書を格納します。
次のセクションに記載されている手順では、volumes
の プロパティを使用して、コンテナーへの証明書のボリューム マウントを行います。COPY
の コマンドを使用して証明書をコンテナー イメージに追加することもできますが、推奨されません。 証明書をイメージにコピーすることは、次の理由からお勧めされません。
- 開発者証明書を使用したテストに同じイメージを使用するのが難しくなります。
- 運用証明書を使用したホスティングに同じイメージを使用するのが難しくなります。
- 証明書の公開には大きなリスクがあります。
オペレーティング システム構成については、次の手順を使用します。
証明書を生成してローカル コンピューターを構成します。
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
.NET CLI を使用した前のコマンド:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
上記のコマンドで、$CREDENTIAL_PLACEHOLDER$
をパスワードに置き換えます。
次の内容を含む docker-compose.debug.yml ファイルを作成します。
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
Docker Compose ファイルで指定されたパスワードは、証明書に使用されるパスワードと一致する必要があります。
HTTPS 用に構成された ASP.NET Core を使用してコンテナーを起動します。
docker-compose -f "docker-compose.debug.yml" up -d
証明書を生成してローカル コンピューターを構成します。
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
dotnet dev-certs https --trust
は macOS と Windows でのみサポートされています。 お使いのディストリビューションでサポートされている方法で、Linux 上の証明書を信頼する必要があります。 ブラウザーで証明書を信頼する必要があることが考えられます。
上記のコマンドで、$CREDENTIAL_PLACEHOLDER$
をパスワードに置き換えます。
次の内容を含む docker-compose.debug.yml ファイルを作成します。
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
Docker Compose ファイルで指定されたパスワードは、証明書に使用されるパスワードと一致する必要があります。
HTTPS 用に構成された ASP.NET Core を使用してコンテナーを起動します。
docker-compose -f "docker-compose.debug.yml" up -d
証明書を生成してローカル コンピューターを構成します。
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
上記のコマンドで、$CREDENTIAL_PLACEHOLDER$
をパスワードに置き換えます。
次の内容を含む docker-compose.debug.yml ファイルを作成します。
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
volumes:
- ${USERPROFILE}\.aspnet\https:C:\https:ro
Docker Compose ファイルで指定されたパスワードは、証明書に使用されるパスワードと一致する必要があります。
HTTPS 用に構成された ASP.NET Core を使用してコンテナーを起動します。
docker-compose -f "docker-compose.debug.yml" up -d
ASP.NET Core に関するフィードバック
ASP.NET Core はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。
その他のリソース
トレーニング
ラーニング パス
.NET と ASP.NET Core を使用してクラウドネイティブのアプリとサービスを作成する - Training
独立してデプロイでき、スケーラビリティが高く、回復性があるアプリとサービスを、無料で使用できるオープンソースの .NET プラットフォームを使って作成します。 .NET では、.NET と ASP.NET Core のアプリケーションやサービス向けの、Docker、Kubernetes、Dapr、Azure Container Registry などの一般的なマイクロサービス テクノロジを使用できます。
認定資格
Microsoft Certified: Azure Developer Associate - Certifications
Azure Functions の作成、Web アプリの実装と管理、Azure ストレージを利用したソリューションの開発などを行うために、Microsoft Azure でエンド ツー エンドのソリューションを構築します。