.net core程序发布到Docker
近日,领导要求把目前的.net core程序发布到Docker上,于是基于之前的学习然后摸着石头过河,特别把重要的核心内容记录一下。
1.端口
网关:13021
API:13022
WEB:13023
2.Dockerfile
2.1前端web
FROM 192.168.103.136/library/gd/angular:5.2 AS base
WORKDIR /app
EXPOSE 80
COPY . /app
COPY ./nginx.conf /etc/nginx
RUN rm -rf /app/nginx.conf
2.2GDNP
FROM 192.168.103.136/library/gd/dotnet/aspnet:2.2 AS base
# FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
COPY . /app
ENTRYPOINT ["dotnet", "GD.NP.ServicesHost.dll"]
2.3API
FROM 192.168.103.136/library/gd/dotnet/aspnet:2.2 AS base
# FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
COPY . /app
ENTRYPOINT ["dotnet", "BDCQYTB.Server.ServicesHost.dll"]
3.发布
2.1前端web
-
构建镜像
# 需要进入到目录:/usr/src/gdsoft/10002_bdcqytb/QYTB_WEB docker build -t qytb_web .
-
创建容器
docker run -d -p 03023:80 --name qytb_web qytb_web
-
浏览器输入地址测试:http://192.168.103.140:03023/
-
删除所有
docker rm -f qytb_web docker rmi qytb_web
2.2GDNP
-
构建镜像
# 需要进入到目录:/usr/src/gdsoft/10002_bdcqytb/QYTB_GDNP docker build -t qytb_gdnp .
-
创建容器
docker run -d -p 03021:80 --name qytb_gdnp qytb_gdnp -v /etc/localtime:/etc/localtime -e TZ=Asia/Shanghai
-
浏览器输入地址测试:http://192.168.103.140:03021/
-
删除所有
docker rm -f qytb_gdnp docker rmi qytb_gdnp
2.3API
-
构建镜像
# 需要进入到目录:/usr/src/gdsoft/10002_bdcqytb/QYTB_API docker build -t qytb_api .
-
创建容器
docker run -d -p 03022:80 --name qytb_api qytb_api -v /etc/localtime:/etc/localtime -e TZ=Asia/Shanghai docker run -d -p 03022:80 --rm --privileged --name qytb_api qytb_api
-
浏览器输入地址测试:http://192.168.103.140:03022/
-
删除所有
docker rm -f qytb_api docker rmi qytb_api
YAML文件
version: '3'
services:
# 应用网关配置
qytb_gdnp:
build: ./QYTB_GDNP
container_name: qytb_gdnp
restart: always
ports:
- 13021:80
network_mode: bridge
# 业务API配置
qytb_api:
build: ./QYTB_API
container_name: qytb_api
restart: always
ports:
- 13022:80
network_mode: bridge
# 业务网站配置
qytb_web:
build: ./QYTB_WEB
container_name: qytb_web
restart: always
ports:
- 13023:80
network_mode: bridge
4.备注
4.1常用命令和参数
- Linux地址:192.168.103.140
- 基础研发部搭建的dockerhub:https://192.168.103.136/
- 文件存放路径:/usr/src/gdsoft/10002_bdcqytb
- nginx路径:/etc/nginx/nginx.conf
- 删除容器:docker rm -f qytb_web
- 删除镜像:docker rmi qytb_web
- 进入容器:docker exec -it qytb_web /bin/bash
4.2防火墙开启端口
# 宿主机开启端口
firewall-cmd --permanent --zone=public --add-port=13021/tcp
firewall-cmd --permanent --zone=public --add-port=13022/tcp
firewall-cmd --permanent --zone=public --add-port=13023/tcp
firewall-cmd --reload
4.3产品编号
全豫通办办理:03020 qytb
司法查控总对总:03021 sfckzdz
税务总对总:03022 swzdz
动态质量监管系统:03023 bdcdjsjdtjgxt
4.4DockerCompose
- docker-compose up 创建镜像、创建容器、启动容器
- docker-compose up -d 创建镜像、创建容器、启动容器(后台)
- docker-compose ps 列出项目中目前所有的容器
- docker-compose start 启动已经存在的服务容器
- docker-compose stop 停止正在运行的容器,可以通过docker-compose start 再次启动
- docker-compose down 停止和删除容器、网络、卷、镜像
分类:
服务器 / Linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗