asp.net core在 Linux Centos上使用Nginx docker部署方案全记录
2022-02-25安装nginx
https://51tools.info/article/yJAnE.html
NGINX 服务代理
进入/etc/nginx
修改nginx.conf文件,这里你可以使用 vim ,也可以下载到本地,修改,然后再提交上去
###### apk begin #######
server {
listen 80;
server_name ab.abc.com;
location / {
root html;
proxy_pass http://localhost:8081;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.html index.htm;
}
location /.doc/ {
proxy_pass http://docs.neters.club/;
}
}
server {
listen 80;
server_name docs.neters.club;
location / {
root /home/Blog.Core/.docs/contents/.vuepress/dist;
index index.html index.htm;
}
}
###### apk end #######
接下来就是重启Nginx服务,
首先可以检测语法错误:
nginx -t
nginx -s reload
这个时候,如果没报错,那恭喜,项目启动成功了,当然你需要配置自己的域名。
进入发布的程序目录,dotnet Blog.Core.dll 启动服务,就可以在公网查看效果了。
但是如果关闭窗口,那服务就停掉了,我们需要守护一下 参考https://51tools.info/article/DE7jJ.html
daocker部署
docker安装参考https://51tools.info/article/qJQxk.html
首先拉取dotnetcore镜像 参考镜像地址https://hub.docker.com/_/microsoft-dotnet-aspnet/ https://hub.docker.com/_/microsoft-dotnet
docker pull mcr.microsoft.com/dotnet/aspnet:6.0
切换到你程序发布目录,目录下的dockerfile内容如下
#dockerfile内容
#这种模式是先dotnet build后,然后再把dll进行构建镜像。
#如果你想把这两步合在一起,可以用VS那个dockerfile。
#FROM 此处的名称是根据上一步安装的镜像来的,可以用docker images查看环境,当前我用的是.net6
FROM mcr.microsoft.com/dotnet/aspnet:6.0
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
WORKDIR /app
COPY . .
EXPOSE 9291
ENTRYPOINT ["dotnet", "WWG.Core.Api.dll"]
运行命令构建镜像 命令最后一个.表示当前目录,此命令会查找当前目录的dockerfile 成功之后可以docker images查看镜像列表
docker build --no-cache -t blogcore-image .
创建容器后台运行 成功会返回容器ID,可以docker ps查看容器列表:(容器内部访问宿主机的数据库 如果用localhost,127.0.0.1是直接访问不到的,可以运行容器的时候 添加 --net=host)
docker run -p 9291:9291 --restart=always -d -e LC_ALL="en_US.UTF-8" -e TZ="Asia/Beijing" --net=host --name=blogcore-container blogcore-image
访问http://yourip:9291
后期迭代,需要把容器删除,再构建镜像,运行容器
如果用到生成图像比如验证码等会报错 The type initializer for 'Gdip' threw an exception
参考https://51tools.info/article/0bPOE.html
参考
https://mp.weixin.qq.com/s/U-qsP9vbH0tWXyfXBMDlTQ
https://www.cnblogs.com/laozhang-is-phi/p/beautifulPublish-mostBugs.html#!comments
http://blog.rdiframework.net/article/246