需要一种侵入性较小的方法来通过https在docker中托管C#MVC应用程序



我有一个C#asp.net mvc应用程序。我通过docker启动它,它运行得很好。它甚至可以通过https工作。在初次运行时,我必须运行以下命令:

dotnet dev-certs https --clean
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p <MY PASSWORD>
dotnet dev-certs https --trust

然后我通过docker-compose --env-file .env up启动应用程序。docker-compose文件如下所示:

version: '3.8'
volumes:
data:
services:
postgresql_MENTIONvlt_bg:
image: postgres
# explicit container name
container_name: postgresql_vlt_bg
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
ports:
- 5432:5432
volumes:
- data:/var/lib/postgresql_vlt_bg
amaranth_main:
container_name: amaranth_main
links:
- postgresql_MENTIONvlt_bg
depends_on:
- postgresql_MENTIONvlt_bg
build:
context: .
dockerfile: Dockerfile
ports:
- 8000:5000
- 8001:5001
environment:
- ASPNETCORE_ENVIRONMENT=Release
- ASPNETCORE_Kestrel__Certificates__Default__Password=${Kestrel_Cert_Password}
- ASPNETCORE_Kestrel__Certificates__Default__Path=${Kestrel_Cert_Rel_Path}
- ApiEndpoints__MainNet__2=${API_KEY_BLOCKCHAIN}
- ApiEndpoints__TestNet__2=${API_KEY_BLOCKCHAIN}
- ConnectionStrings__db=${CONNECTION_STRING_DB}
- ApiEndpoints__EmailUsername=${EMAIL_USERNAME}
- ApiEndpoints__EmailPassword=${EMAIL_PASSWORD}
- ApiEndpoints__SmtpDomain=${SMPT_DOMAIN}
- ApiEndpoints__SmtpPort=${SMPT_PORT}
- ApiEndpoints__SmtpPostmarkKey=${SMPT_POSTMARK_KEY}
volumes:
- ${Kestrel_Cert_Abs_Path}:/https:ro

我的${Kestrel_Cert_Abs_Path}设置为~/.aspnet/https,我的${Kestrel_Cert_Rel_Path}设置为/https/aspnetapp.pfx

问题是,与我一起工作的一位开发人员不想运行dotnet dev-certs https命令,因为他不想破坏本地主机的开发证书。有没有什么方法可以在不需要运行dotnet dev-certs https命令的情况下通过https启动asp.net mvc应用程序?

您可以在"amaranth_main";集装箱

类似于:

docker-compose exec amaranth_main sh -c "dotnet dev-certs https --clean"
docker-compose exec amaranth_main sh -c "dotnet dev-certs https -ep /https/aspnetapp.pfx -p <MY PASSWORD>"
docker-compose exec amaranth_main sh -c "dotnet dev-certs https --trust" 

最新更新