.net程序在 windows 下部署Docker
当前操作在win11系统下进行部署
1、开启Linux的windows功能

2、下载docker 客户端 ,并安装
安装 Docker Desktop for Windows
Docker Desktop 官方下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows
点击 Get started with Docker Desktop,并下载 Windows 的版本,如果你还没有登录,会要求注册登录:

3、docker客户端 依赖 wsl ,linux内核环境
下载Ubuntu,这里我选择的是22.04版本下载,因为下载其他版本时没下成功。

设置Ubuntu 设置对应的账号密码

设置完成后一直下一步就可以

4、添加Docker支持
4.1 项目右键-->添加 -->Docker支持
4.2 项目下会多出一个 dockerfile 文件
4.3 打开Program.cs配置文件
添加 builder.WebHost.UseUrls(new[] { "http://*:8023" }); //这里可以加入多个端口,在容器中才可以使用多个端口
注释 app.UseHttpsRedirection();
//指定多个可用端口 builder.WebHost.UseUrls(new[] { "http://*:8023" , "http://*:8024", "http://*:8025"}); //app.UseHttpsRedirection(); //Docker使用需要注释这个
4.4、dockerfile 文件需要增加4句
意思是将SECLEVEL、MinProtocol 版本又2 降为1,必须用4句一起,放在 ENTRYPOINT 之前
RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g' /etc/ssl/openssl.cnf RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /etc/ssl/openssl.cnf RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g' /usr/lib/ssl/openssl.cnf RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /usr/lib/ssl/openssl.cnf

* 如果部署在docker上启动不了容器时,尝试将下面注释的开启,再重新部署。


5、生成镜像文件
5.1、选择dockerfile 文件右键 --> 生成docker映像

5.2、等待生成之后,docker 客户端上面会出现一个镜像文件

5.3、将镜像文件放在容器中运行,需要使用命令执行(页面配置的我没搞成功)
执行命令:以管理员身份打开 Windows Powershell (兼容的命令Windows Powershell就可以执行,不兼容的命令这里执行不了。配置好Ubuntu 支持所有Docker需要的命令)
docker run -d -p 8023:8023 --name myapiDocker esptyldapi:latest
其中: ① 8023:8023 :两个端口 第一个对外,第二个对内,这里指定的端口需要是在Program.cs配置文件指定的端口。
② myapiDocker :是容器名称,生成名为myapiDocker 的容器
③ esptyldapi:latest : esptyldapi是镜像文件名称 ,latest是镜像文件的Tag

5.4、查看容器列表


运行当前端口

以上是页面操作,使用程序源码直接发布docker
实际使用过程中,客户现场不是直接用源码发布,而是使用发布好的程序进行发布。
以下演示使用发布好的程序发布docker
1、Program.cs配置文件跟上一步一样,

以管理员身份打开 Windows Powershell 进行build 镜像文件
定位到发布的文件路径下
使用命令打包镜像文件(Ubuntu 打包镜像文件命令不会。。。。)以下多种方式可以部署镜像:
1: docker build -t train_api . //创建镜像 train_api
2: docker build -t 项目名称 -f Dockerfile ..
执行命令:以管理员身份打开 Ubuntu ,输入以下命令,生成容器,(可以一次性指定多个端口给一个容器,不知道怎么指定多个容器)
docker run -d -p 8023:8023 --name myapiDocker esptyldapi:latest
其中: ① 8023:8023 :两个端口 第一个对外,第二个对内,这里指定的端口需要是在Program.cs配置文件指定的端口。
② myapiDocker :是容器名称,生成名为myapiDocker 的容器
③ esptyldapi:latest : esptyldapi是镜像文件名称 ,latest是镜像文件的Tag
Docker 安装 Redis


浙公网安备 33010602011771号