由于需要在docker中部署基于 https的web服务,于是去查找资料,幸运的是这方面的资料很多,不幸的是很多资料可能基于说明侧重点的原因,很多参数都做了硬编码,这在我们的生产环境中使用应该说是不合适的,于是在根据这些材料完成我的程序部署后,就想以记录的目录,把过程整理一下,可以为自己作记录,也可以为他人作参考,当然这是站在巨人的肩膀上的工作,还是要鸣谢各位技术达人。
本文程序基于aps.net core3.1实现,使用微软官方的基础镜像 mcr.microsoft.com/dotnet/core/aspnet:3.1
1、修改Dockerfile
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
LABEL version="1.0" description="A MVC test web"
WORKDIR /app
COPY . .
ENV ASPNETCORE_Kestrel__Certificates__Default__Password="123456"
ENV ASPNETCORE_Kestrel__Certificates__Default__Path=/app/server.pfx
ENV certPassword 123456
RUN openssl genrsa -des3 -passout pass:${certPassword} -out server.key 2048
RUN openssl rsa -passin pass:${certPassword} -in server.key -out server.key
RUN openssl req -sha256 -new -key server.key -out server.csr -subj '/CN=localhost'
RUN openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt
RUN openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -certfile server.crt -passout pass:${certPassword}
FROM base AS final
WORKDIR /app
COPY --from=base /app .
ENTRYPOINT ["dotnet", "k8smvc.dll"]
2、生产镜像
docker build -t jaine/k8smvc:latest .
3、运行测试
docker run -it --rm -p 8443:443 --name k8smvc jaine/k8smvc:latest
打完收工
参考资料
1、如何在docker配置asp.net core https协议 https://www.cnblogs.com/billming/p/7131557.html
2、ASPNetCore Docker 搭建https服务器 https://www.cnblogs.com/zlyxm/p/11482256.html