在docker上部署https
来源:互联网 发布:分数统计软件 编辑:程序博客网 时间:2024/05/22 15:43
本文参考自《Step by step: Expose ASP.NET Core over HTTPS with Docker》
自从微软发布.net core以来,就在许多社区掀起了讨论,笔者也是在工作中开始学习.net core/asp.net core的。说实话,在学习开发asp.net core中,笔者遇到了非常多的问题,踩了许多坑,比如.net core1.1版本中没有提供system.drawing类库,笔者只能借用mono的drawing库来实现一些验证码的绘制;又比如.net core中没有office处理类库,又只能寻找第三方开发的EPPLUS.Core来辅助实现excel的处理。在翻过一座座大山、踩过一个个坑之后,终于到了部署阶段,谁想boss说要在docker上部署https让我彻底懵逼了,度娘上找了半天的没一片文章有用,最后还是找了谷哥才把问题解决,所以才想写篇文章,学习一下。
对于只想把asp.net core部署在iis或者Kestrel部署的可以参考文章
《NET Core Kestrel部署HTTPS》
《ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)》
好,那么进入正题~~
(1)导入Kestrel Https包
"Microsoft.AspNetCore.Server.Kestrel.Https": "1.0.1"
(2)program.cs配置https
public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel(opt=> { opt.UseHttps("server.pfx", "123456"); }) .UseUrls("https://*:443") .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); }
在配置文件中,我们设置签名文件名为server.pfx,密码为123456,配置端口为443;由于docker是一个容器,运行环境独立,我们需要在容器中用命令创建签名文件。
(3)编写Dockerfile文件
在Dockerfile文件中加入创建签名文件命令
#定义签名密码ENV certPassword 123456 RUN openssl genrsa -des3 -passout pass:${certPassword} -out server.key 2048RUN openssl rsa -passin pass:${certPassword} -in server.key -out server.keyRUN 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.crtRUN openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -certfile server.crt -passout pass:${certPassword}
(4)创建docker image
sudo docker build -t httpssample .
(5)创建容器
//前台运行sudo docker run -it -p 443:443 httpssample//后台运行sudo docker run -t -d -p 443:443 httpssample
这样就能访问https://localhost/了
- 在docker上部署https
- 在docker上部署Hadoop
- 轻轻松松在centos上部署docker服务
- 在Linux服务器上部署Apache和https证书
- 在Docker Swarm上部署Apache Storm:第1部分
- 在Docker Swarm上部署Apache Storm:第2部分
- 在Docker上部署mongodb分片副本集群。
- 在 CentOS 7 上使用 Docker 部署安装 GitLab
- 在Mac上通过Docker部署Oracle Database 12.2版本
- 在MAC上安装docker并部署oracle12.2
- Nginx上部署HTTPS + HTTP2
- [Docker大讨论]docker并非万能,你也不必把所有的东西都部署在docker上
- 【Docker】在Docker中部署tornado项目
- es部署在docker里面,让es固定在一台slave上跑
- 在Docker中部署GitLab
- 在Docker中部署django
- 在docker下部署zookeeper,
- 在docker中部署 oracle
- 棋盘问题(DFS)
- usermod,用户密码管理,mkpasswd
- 多线程(未完结,待续)
- spring基础思维导图
- Oc 拨打电话和发短信功能的实现
- 在docker上部署https
- Nikita and string
- javascript中的类型判断
- svn服务器搭建
- Reverse Words in a String--LeetCode
- mysql创建表,同时加上约束,SQL查看所有表和查看某个表结构;sql删除表
- 经典背包问题----(01背包、完全背包、多重背包)
- 排序算法@c++描述-shell排序
- C语言回溯法装载问题