.Net Core3.1发布到Docker

前期项目准备这些就不多做介绍了,新建一个ASP.NET Core3.1的API项目即可。

重点来了,我们需要新建Dockerfile文件,直接右键-新增中就有,新建成功后复制下面内容:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#引入镜像,低版本 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 5000

#复制文件到工作目录
COPY . .
 
#ENV :配置系统环境变量,比如程序环境环境等在这里配置(开发、预发、线上环境)
#这里是配置程序运行端口,如果程序不使用默认的80端口这里一定要设置(程序运行端口)
ENV ASPNETCORE_URLS http://+:5000

#设置时间为中国上海,默认为UTC时间
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#启动程序
ENTRYPOINT ["dotnet", "WebApplication2.dll"]

编译发布

这个时候项目就打包完成了。

1、拷贝到linux服务器,这里我用的是FileZilla工具

2、构建镜像
在构造之前,先测试下当前dll是否有效

首先 cd 上传到linux服务器的项目文件夹目录

然后执行 dot­net 项目dll文件名

如果提示dotnet命令不可使用,查看版本,测试是否安装成功。

dot­net –ver­sion

访问正常,关闭网站,开始构建镜像:

 进入当前程序目录,输入构建命令   
[root@localhost publish]# docker build -t test-demo .

build 命令参数:

 -t  --指定镜像名称 (只能小写)

 .   --表示build上下文为当前目录,默认情况docker会使用上下文的根目录找到Dockerfile文件
 查看构建后的:docker image

 docker images 

3、创建并启动容器

[root@localhost publish]# docker run --name 容器名称 -d -p 外部访问端口:5000 镜像名称自定义

如:docker run --name=wakaserver -p 外部访问端口:5000 --restart=always -d test-demo

run命令参数:

 -d --表示在后台以守护态(daemonized)形式运行容器
 -p --外部端口与内部容器端口映射。
 --name 指定容器的名称。当然可以不指定,默认会为我们创建
自动重启,设置restart属性为always,防止宿主机或者docker重启后容器停止
 最后一个参数 test-demo 就是我们刚创建的镜像名称

4、检查docker容器列表

[root@ls6vd3vxe5 publish]# docker ps -a


CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS                   PORTS                               NAMES
4896a816d270   nginx          "/docker-entrypoint.…"   About an hour ago   Up 7 minutes             0.0.0.0:80->80/tcp, :::80->80/tcp   nginx
307989f55614   test-demo      "dotnet WebApplicati…"   2 days ago          Exited (0) 3 hours ago                                       test-demo
0891a9f4591f   ubuntu:15.10   "/bin/echo 'Hello wo…"   3 days ago          Exited (0) 3 days ago                                        competent_moore

最后效果:

这里是我项目中集成了swagger,所以直接看这个页面直观些。

可能会遇到所有流程都没问题,docker容器中也可以看到项目发布成功,这时候可以试试重新启动docker服务:

restart docker.service

为您推荐

发表评论

您的电子邮箱地址不会被公开。