Docker部署.Net Core 3.1程序(超详细)

首先,我们把编译好的.Net Core 3.1程序上传到宿主机的特地目录,如下图,确保你的程序路径在netcoreapp3.1/publish/文件夹中,以下是以我的程序Web.dll为例

然后,在netcoreapp3.1文件同级,新建Dockerfile文件,并且为了防止DOCK镜像中可能不存在字体,我们在同级别目录放一个字体文件 simsun.ttc

Dockerfile的内容如下,以下我以运行我的Web.dll程序为例子,为了调试方便,看到错误信息,ASPNETCORE_ENVIRONMENT暂时设置为Development,容器内端口设置为80,容器内的工作目录设置为/app

# 使用官方.NET Core运行时镜像作为基础镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
 
# 设置工作目录
WORKDIR /app
 
# 复制项目发布文件到容器中的工作目录
COPY ./netcoreapp3.1/publish/ .

COPY simsun.ttc /usr/share/fonts/
 
# 设置环境变量,端口
ENV ASPNETCORE_ENVIRONMENT=Development
ENV ASPNETCORE_URLS=http://+:80
 
# 当容器启动时,运行应用程序
ENTRYPOINT ["dotnet", "Web.dll"]

接下来,在控制台,定位到指定目录,用以下命令生成镜像,然后就会新增一个mathapp的Image镜像

sudo docker build -t mathapp .

此时,我们可以试着用这个镜像部署一个容器mathapp,并且把宿主机的8080端口,映射到容器80

sudo docker run --name mathapp -d -p 8080:80 mathapp

这时,我们就可以在游览器地址栏输入:http://服务器IP:8080 来访问自己的.Net Core程序了

接下来,我们为了后续更新方便,也可以试着在宿主机做个文件映射,首先,把容器内刚刚的/app工作目录的文件,复制到宿主机

sudo docker cp mathapp:/app /home/ec2-user/www

此时,我们看到,宿主机的对应目录中多了一个app文件,里面就是我们容器的工作目录文件

此时,我们可以删除之前创建的测试容器,创建全新容器,然后把这个目录挂载到新容器上

sudo docker stop mathapp
sudo docker rm mathapp
sudo docker run -d -p 8080:80 --name mathapp --restart=always -v /home/ec2-user/www/app:/app mathapp

接下来,后续更新只要更新宿主机中的文件,然后重启对应的docker容器即可

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注