.NET Core 3.1 Linux使用docker打包并部署
生成环境
Windows 10+VS2019+.NET Core 3.1+Docker20.10.5
准备工作
linux 安装.net core 运行环境
#检查安装的.NET Core SDk 情况命令
dotnet --list-sdks
#检查安装的.NET Core 运行库情况命令
dotnet --list-runtimes
如果没有安装
#Centos8中安装.NET Core SDK命令
sudo dnf install dotnet-sdk-版本
#比如我要安装.NET Core SDK 3.1 版本命令如下
sudo dnf install dotnet-sdk-3.1
或者
1:sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
2:sudo yum update 或者直接安装 sudo yum install dotnet-sdk-3.1
.netCore 程序
生成运行发布的程序,确认无误。
在运行发布后的文件夹下添加名为Dokcerfile文件,需要注意此文件没有后缀,同时需要注意文件名的大小写,如下图所示:
对应的Dockerfile文件如下所示:
#引入镜像,低版本 docker 去掉 AS base
#换成别人做的阿里镜像
#FROM registry.cn-hangzhou.aliyuncs.com/newbe36524
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#配置工作目录 相当于cd
WORKDIR /app
#暴露容器端口,此端口与程序运行路径一致,可
EXPOSE 6001
#复制文件到工作目录
COPY . .
#ENV :配置系统环境变量,比如程序环境环境等在这里配置(开发、预发、线上环境)
#这里是配置程序运行端口,如果程序不使用默认的80端口这里一定要设置(程序运行端口)
ENV ASPNETCORE_URLS http://+:6001
#设置时间为中国上海,默认为UTC时间
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#启动程序
ENTRYPOINT [“dotnet”, "Citms.Common.Web.dll"]
将生成后的文件拷贝到linux服务器目录下
构建docker 镜像
cd /opt/homenet
docker build -t hnyy-smw:v1.0 .
执行结果
查询是否创建了
docker image
启动容器
[root@localhost homenet]# docker run -d -p 6001:6001 --restart=always --name hnyy-smw hnyy-smw:latest
挂载目录,映射容器内目录到宿主机,如文件下载、上传等
端口,宿主机与容器内端口号映射,容器内端口号要保证与Dockerfile文件内一致
自动重启,设置restart属性为always,防止宿主机或者docker重启后容器停止
查看程序是否正常运行
docker ps 或者 docker container ls