docker容器部署.NETCore 项目前后分离整过程

发布时间:2023年12月27日

创建项目docker bridge网络,用来整个项目容器之间相互访问

#创建桥接网络
sudo docker network create metaverse.app 或docker network create --driver bridge  metaverse.app
#查看创建的网络是否存在
sudo docker network ls 

#将已存在容器加入网络或者重新运行新容器加入网络
sudo docker network connect metaverse.app --alias app-test app-test 

#把webapi容器移除自定义网络
sudo docker network disconnect  app app-test

#如果要修改容器启动项,则可以使用  docker update 
sudo  docker update app-test --restart always  #这表示设置容器随着docker启动自动启动
#查看网络中有那些容器加入
sudo docker network inspect metaverse.app 

创建network

数据库sqlserver2022(sqlserver2022运行到容器教程)

#将sqlserver2022容器加入到项目网络中或在运行的时候加入到网络
sudo docker network connect metaverse.app --alias sqlserver2022 sqlserver2022
或
sudo docker run  -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Suixin@123" -e "MSSQL_PID=Enterprise" -e "MSSQL_COLLATION=Chinese_PRC_BIN" \
--network metaverse.app --network-alias sqlserver2022 \
   -p 1433:1433 --name sqlserver2022 \
   -d --restart=always \
   -v /opt/mssql2022:/var/opt/mssql \
   -v /opt/mssql2022_backup:/opt/mssql2022_backup \
   -e TZ=Asia/Shanghai \
   mcr.microsoft.com/mssql/server:2022-latest
   #查看容器是否加入成功
  sudo  docker inspect sqlserver2022
   #查看网络中容器是否加入成功
  sudo  docker network inspect metaverse.app 

sqlserver2022
metaverse.app

发布程序并复制到服务器上
这里我以NET6为例(System.Drawing.Common类库,Linux下Ubuntu会报Gdip错误解决建议)
dokcer 部署 使用 SixLabors.Fonts 库遇到SystemFonts.Families默认字体为空问题,解决方式加载自定义路径字体或者拷贝字体到 “/usr/local/share/fonts/”, “/usr/share/fonts/”, 等路径下
以下Dockerfile

#如果使用了System.Drawing.Common类库,Linux下Ubuntu会报Gdip错误,如果安装不生效的话,直接用官方建议的替代库吧
#这里我发布到服务器未生效,服务器我已用ImageSharp库了
#The type initializer for 'Gdip' threw an exception.
 #---> System.PlatformNotSupportedException: System.Drawing.Common is not supported on non-Windows #platforms. See https://aka.ms/systemdrawingnonwindows for more information.
#在.NET 5 和早期版本中需要安装libgdiplus类库来解决,在 .NET 6 及更高版本中需要使用替代库来解决
apt-get install libgdiplus
cd /usr/lib
ln -s libgdiplus.so gdiplus.dll
#添加docker支持Dockerfile文件
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
#注意注意注意 如何程序里有使用 "Urls": [ "http://*:8000" ]或指定监听端口,导出的EXPOSE 80 端口要一致
#否则会出现容器正常运行,却无法访问问题
EXPOSE 80
FROM base AS final

#-------------开始(如果镜像源是国内的,则可以不需要)-----------------------
#RUN cd /etc/apt
#WORKDIR /etc/apt
# 备份
#RUN mkdir sources.list.bak
#RUN cp sources.list ./sources.list.bak
# 以覆盖+追加的方式替换掉sources.list文件
#我ubuntu版本为20.04,镜像源需要根据自己的系统版本来更换 
#使用lsb_release -c 能查看到系统的发行版本号名称 focal 
#RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse'>>sources.list
#RUN echo
文章来源:https://blog.csdn.net/u010784529/article/details/135159390
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。