使用 Docker Compose over HTTPS 裝載 ASP.NET Core 映像
ASP.NET Core 預設使用 HTTPS。 HTTPS 依賴憑證來達到信任、identity,以及加密。
本文件說明如何使用 HTTPS 執行預先建置的容器映像。
如需開發案例,請參閱使用 Docker over HTTPS 開發 ASP.NET Core 應用程式。
此範例需要 Docker 17.06 或更新版本的 Docker 用戶端 。
必要條件
本文件的部分指示需要 .NET Core 2.2 SDK 或更新版本。
憑證
網域的生產託管需要憑證授權單位提供的憑證。 Let's Encrypt 是提供免費憑證的憑證授權單位。
本文件使用自我簽署的開發憑證,透過 localhost
裝載預先建置的映像。 這些指示類似於使用生產憑證。
針對生產憑證:
- 不需要
dotnet dev-certs
工具。 - 憑證不需要儲存在指示中使用的位置。 將憑證儲存在網站目錄以外的任何位置。
下一節中所包含的指示會使用 docker-compose.yml 中的 volumes
屬性,將憑證掛接至容器。您可以在 Dockerfile 中使用 COPY
命令將憑證新增至容器映像,但不建議這麼做。 基於下列理由,不建議將憑證複製到映像:
- 這會使使用相同映像透過開發人員憑證進行測試變得困難。
- 使用生產憑證進行裝載時,很難使用相同的映像。
- 揭露憑證有重大風險。
使用 docker compose 以 HTTPs 支援啟動容器
針對您的作業系統組態,使用下列指示。
使用 Linux 容器的 Windows
產生憑證並設定本機電腦:
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
macOS 或 Linux
產生憑證並設定本機電腦:
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 或更新版本。 如需 Linux .NET 8.0.401 SDK 及更早版本的資訊,請參閱您的 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
使用 Windows 容器的 Windows
產生憑證並設定本機電腦:
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 依賴憑證來達到信任、identity,以及加密。
本文件說明如何使用 HTTPS 執行預先建置的容器映像。
如需開發案例,請參閱使用 Docker over HTTPS 開發 ASP.NET Core 應用程式。
此範例需要 Docker 17.06 或更新版本的 Docker 用戶端 。
必要條件
本文件的部分指示需要 .NET Core 2.2 SDK 或更新版本。
憑證
網域的生產託管需要憑證授權單位提供的憑證。 Let's Encrypt 是提供免費憑證的憑證授權單位。
本文件使用自我簽署的開發憑證,透過 localhost
裝載預先建置的映像。 這些指示類似於使用生產憑證。
針對生產憑證:
- 不需要
dotnet dev-certs
工具。 - 憑證不需要儲存在指示中使用的位置。 將憑證儲存在網站目錄以外的任何位置。
下一節中所包含的指示會使用 docker-compose.yml 中的 volumes
屬性,將憑證掛接至容器。您可以在 Dockerfile 中使用 COPY
命令將憑證新增至容器映像,但不建議這麼做。 基於下列理由,不建議將憑證複製到映像:
- 這會使使用相同映像透過開發人員憑證進行測試變得困難。
- 使用生產憑證進行裝載時,很難使用相同的映像。
- 揭露憑證有重大風險。
使用 docker compose 以 HTTPs 支援啟動容器
針對您的作業系統組態,使用下列指示。
使用 Linux 容器的 Windows
產生憑證並設定本機電腦:
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
macOS 或 Linux
產生憑證並設定本機電腦:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
只有在 macOS 和 Windows 上才支援 dotnet dev-certs https --trust
。 您必須以您的發行版本支援的方式信任 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
使用 Windows 容器的 Windows
產生憑證並設定本機電腦:
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