asp.net core 接口发布到Linux(centos)的生产环境之基于docker部署


环境:

centos:7

docker: 20.10.16,

.net 5.0

准备:webapi应用程序

修改Dockerfile文件

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
COPY . .
ENTRYPOINT ["dotnet", "Yak.Docker.Api.dll"]

发布接口:

文件拖拽到linux系统中,包括Dockerfile文件,我这里上传目录是 /home/website/

构建镜像,注意后面的“.”这个点不能少,这个.代表的是当前构建镜像的上下文路径

#docker build -t <镜像名称> <目录> .为当前目录
cd /home/website
docker build -t apitest .


镜像构建成功,使用命令docker images 看看:

启动容器,执行下面命令

#docker run --name=<容器名称>  -d<后台运行> -p <外部暴露端口>:<容器端口> <关联镜像>
docker run --name apitest -d -p 80:80 apitest


查看容器

docker ps

容器正常运行,浏览器访问,地址: http://192.168.192.136/weatherforecast

           

设置容器开机启动

 docker update --restart=always (自己docker产生的id)

其他命令:

运行镜像(-v 后面的路径为项目地址,使用后可以热更新, -p后面的端口前面对应的是访问端口,后面对应的是docker内的端口,即前面设置的端口)

  docker run -d --name webapi -v /home/admin/Public/website/docker/:/app -p 5001:5000   webapi

替换完程序后需要重启一下

docker restart  程序名称
docker -rm -f nameorid ##删除程序
docker -rmi -f nameorid ##删除镜像
firewall-cmd --zone=public --add-port=80/tcp --permanent ##开启防火墙某个端口
firewall-cmd --list-ports ##查看已经开放的端口
systemctl stop firewalld ##关闭防火墙
systemctl start firewalld ##开启防火窗
systemctl status firewalld ##防火墙运行状态
systemctl reload firewalld ##重启防火墙
top ##查看运行的进程 排行
ctrl+C 退出正在运行的程序

 参考:

https://blog.csdn.net/qq_37997978/article/details/122061796

https://www.cnblogs.com/zhouxiaojie/p/15223400.html