将 .net core 通过容器docker 部署到 linux 记录
1. add docker to linux 执行
(官方脚本 安装) curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
或
(国内 daocloud 一键安装命令) curl -sSL https://get.daocloud.io/docker | sh
如果通过以上方法提示nokey 什么的 尝试以下方式
sed -i 's/download.docker.com/mirrors.cloud.tencent.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
安装完后默认是没有启动的 .需要启动执行以下命令
systemctl enable docker --now (--now 现在启动)
查询docker是否运行了
systemctl status docker
开启防火墙, 开启http/https 开启转发服务(不开外网访问不了,为是容器需要) 开放5000的端口
&& firewall-cmd --permanent --add-service=http \
&& firewall-cmd --permanent --add-service=https \
&& firewall-cmd --permanent --add-masquerade \
FROM mcr.microsoft.com/dotnet/core/aspnet:2.1
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
WORKDIR /coretest
ENV ASPNETCORE_URLS http://+:5000 #net 运行时使用的端口号不指定默认启动时将绑定80端口
ENTRYPOINT ["dotnet", "testCore.dll"]

生成镜像
docker build -t webapi .
webapi 指生成的docker 镜像名, 后面的 . 指当前目录
查询当前已生成的镜像
docker images
server {
listen 80;
server_name 公网的地址;
location / {
#Proxy Settings
proxy_pass http://127.0.0.1:5000; #这里是映射的内网的地址
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_pass_header Server;
proxy_redirect off;
proxy_set_header X-Scheme $scheme;
proxy_pass_request_headers on;
add_header Static Nginx-Proxy;
}
}

----如果需要将服务器设为代理服务器 需要卸载 监控程序(一般服务器都有)
以下为腾讯云 监控软件 的卸载
sh /usr/local/qcloud/stargate/admin/uninstall.sh && \
sh /usr/local/qcloud/monitor/barad/admin/uninstall.sh
如果 docker运行失败处理步骤(以下为个人处理方式 ,不保证是最优的)
1. 注释dockerFile里的 ENTRYPOINT ["dotnet", "dockertest.dll"] 即 #ENTRYPOINT ["dotnet", "dockertest.dll"]
2. 重新生成images 然后创建新docker运行
3. 使用命令 sudo docker exec -it docker id或dockername /bin/bash 进入docker内部(注意把程序生成debugger版本的) 然后直接dotnet 你的程序集.dll 就会看到程序具体的异常信息如下图
进入docker后的显示 (最后几行sa@xxxx 的是我的服务器的) root@xxxx 这个是进入docker后的.也可以使用dotnet --info查看 docker里dotnet的信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现