.Net 6.0 WebApi 使用Docker部署到Linux系统CentOS 7
转自:https://www.cnblogs.com/Hollow-user/articles/18129083
.Net 6.0 WebApi 使用Docker部署到Linux系统CentOS 7
目录
- 1. 创建.NET 6.0 WebAPI项目
- 2. 修改Dockerfile文件
- 3. 发布项目
- 4. 把发布后的项目上传到linux服务器上
- 5. CentOS7安装Docker
- 6. 使用Docker部署 WebAPI
- 7. 日常运维
- 8. 问题整理
1. 创建.NET 6.0 WebAPI项目



2. 修改Dockerfile文件
-
修改前
-
修改内容
# 使用官方的 .NET 6.0 SDK 镜像作为基础镜像 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base # 暴露端口 EXPOSE 9900 # WORKDIR 镜像的工作目录 WORKDIR /app # 复制文件 COPY . . # 定义启动命令 ENTRYPOINT ["dotnet", "DemoWebAPI.dll"]
-
修改后
-
设置Dockerfile文件 为 始终复制
3. 发布项目
- 发布项目
4. 把发布后的项目上传到linux服务器上
- 使用 Xftp7 上传文件
5. CentOS7安装Docker
安装 Docker 在 CentOS 7 上通常需要执行以下步骤:
-
更新系统:
sudo yum update
-
安装 Docker 依赖:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
-
添加 Docker 社区版仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
安装 Docker:
sudo yum install docker-ce docker-ce-cli containerd.io
-
启动 Docker 服务:
sudo systemctl start docker
-
设置 Docker 开机自启动:
sudo systemctl enable docker
-
验证 Docker 是否安装成功:
sudo docker --version
以上步骤应该可以在 CentOS 7 上安装 Docker。安装完成后,您可以使用 Docker 命令来管理容器和镜像。
6. 使用Docker部署 WebAPI
- 进入到Dockerfile所在目录
cd /root/DemoWebAPI
- 构建镜像,build 参数用于 构建镜像,-t 参数用于 命名镜像,demooapi 为镜像名称,v1 为镜像版本 ,[ . ] 参数用于 构建镜像的目录。
docker build -t demoapi:v1 .
- 查看镜像
docker images
- 启动容器,-d 参数用于 启动容器,-p 参数用于 映射主机的 9900 端口到容器的 80 端口, --name 参数用于指定 容器名称为 demoapi,demoapi:v1 参数用于指定 镜像名称为 demoapi:v1,-v 参数用于 映射主机的 /root/DemoWebAPI 目录到容器的 /app 目录( app 是dockerfile 中的 WORKDIR)。
docker run -p 9900:80 --name demoapi -v /root/DemoWebAPI:/app -d demoapi:v1
- 查看容器
docker ps -a
- 访问容器
curl localhost:9900/WeatherForecast
7. 日常运维
- WebAPI 更新 步骤
-
1.更新 /root/DemoWebAPI 目录下的文件(因为 docker 容器挂载了 /root/DemoWebAPI 目录,所以更新 /root/DemoWebAPI 目录下的文件后,不需要重新构建镜像,直接重启 docker 容器即可)
-
2.重启 docker 容器
docker restart demoapi
-
- 常用命令
- 查看容器日志
docker logs demoapi
- 查看容器状态
docker ps -a
- 停止容器
docker stop demoapi
- 删除容器
docker rm demoapi
- 删除镜像
docker rmi demoapi:v1
- 进入容器
docker exec -it demoapi bash
- 退出容器
ctrl + p + q
- 停止并删除所有容器
docker stop $(docker ps -a -q) docker rm $(docker ps -a -q)
- 查看容器日志
8. 问题整理
- 外网无法访问本地docker容器(可能是防火墙导致)
- 查看防火墙状态
systemctl status firewalld
- 关闭防火墙
systemctl stop firewalld systemctl disable firewalld
- 重启docker服务
systemctl restart docker
- 查看防火墙状态
【问题1】
转自:https://cloud.tencent.com/developer/article/2046854?from=15425
CentOS安装CA证书
【问题2】
转自:https://www.cnblogs.com/m1573/p/15865499.html
curl: (56) Recv failure: Connection reset by peer解决方式
搭建docker中的mysql访问宿主机端口报错curl: (56) Recv failure: Connection reset by peer
解决方法很简单,重建docker0网桥,但出现错误原因不清楚
重建docker0网桥步骤:
# 停止docker
systemctl stop docker
# 安装bridge-utils
yum install -y bridge-utils
# 关闭docker0网桥
ip link set dev docker0 down
# 删除docker0网桥
brctl delbr docker0
# 添加docker0网桥
brctl addbr docker0
# 添加网桥信息
ip addr add 172.16.10.1/24 dev docker0
# 启动docker0网桥
ip link set dev docker0 up
# 查看网桥是否正常
ip addr
# 启动docker
systemctl restart docker
可能每次重启centos都要运行一遍这个
参考:https://blog.csdn.net/qq_37490555/article/details/113944414?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164412107116780271580309%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164412107116780271580309&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-8-113944414.pc_search_insert_ulrmf&utm_term=curl%3A+%2856%29+Recv+failure%3A+Connection+reset+by+peer&spm=1018.2226.3001.4187
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器