1. 系统环境

Contos 7.9安装的Docker;Docker版本如下:

[root@localhost dotnet]# docker --version
Docker version 18.03.1-ce, build 9ee9f40

Docker安装参考:Contos安装Docker

本文在/home文件夹下创建了dotnet文件夹,发布的文件上传到这个文件下,路径为:

/home/dotnet

2.代码发布及Dockerfile配置

2.1 项目右键添加Docker支持,选择Linux选项,自动构建Dockerfile文件 2.2 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 5000

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

#复制文件到工作目录,不管什么文件都复制这是最偷懒的做法
COPY . .

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

#设置debian系统  
RUN sed -i 's#http://deb.debian.org#https://mirrors.aliyun.com#g' /etc/apt/sources.list  
RUN apt-get update && apt-get install -y vim && apt-get install -y libgdiplus

ENTRYPOINT ["dotnet", "Xia.CoreDapperAutoFacApi.dll"]

注:不建议使用系统自动构建的Dockerfile配置,因项目引用有问题,打包成docker镜像会出错。 可参考:使用docker部署.net core3.1时的Dockerfile写法

2.3 Dockerfile文件编写完成后,上传至CentOS目录下,完整的如下所示

drwxr-xr-x. 2 root root    4096 4月   3 18:38 .
drwxr-xr-x. 3 root root      20 4月   3 17:31 ..
-rw-r--r--. 1 root root     162 4月   3 17:31 appsettings.Development.json
-rw-r--r--. 1 root root     372 4月   3 17:31 appsettings.json
-rw-r--r--. 1 root root   31232 4月   3 17:31 Autofac.Configuration.dll
-rw-r--r--. 1 root root  317952 4月   3 17:31 Autofac.dll
-rw-r--r--. 1 root root   16384 4月   3 17:31 Autofac.Extensions.DependencyInjection.dll
-rw-r--r--. 1 root root  197632 4月   3 17:31 Dapper.dll
-rw-r--r--. 1 root root   44544 4月   3 17:31 Dapper.SimpleCRUD.dll
-rw-r--r--. 1 root root    1529 4月   5 10:21 Dockerfile
-rw-r--r--. 1 root root   14720 4月   3 17:31 Microsoft.Bcl.AsyncInterfaces.dll
-rw-r--r--. 1 root root   14440 4月   3 17:31 Microsoft.Bcl.HashCode.dll
-rw-r--r--. 1 root root   20872 4月   3 17:31 Microsoft.EntityFrameworkCore.Abstractions.dll
-rw-r--r--. 1 root root 1555848 4月   3 17:31 Microsoft.EntityFrameworkCore.dll
-rw-r--r--. 1 root root  859528 4月   3 17:31 Microsoft.EntityFrameworkCore.Relational.dll
-rw-r--r--. 1 root root   26488 4月   3 17:31 Microsoft.Extensions.Caching.Abstractions.dll
-rw-r--r--. 1 root root   32632 4月   3 17:31 Microsoft.Extensions.Caching.Memory.dll
-rw-r--r--. 1 root root   21368 4月   3 17:31 Microsoft.Extensions.Configuration.Abstractions.dll
-rw-r--r--. 1 root root   25464 4月   3 17:31 Microsoft.Extensions.Configuration.Binder.dll
-rw-r--r--. 1 root root   27512 4月   3 17:31 Microsoft.Extensions.Configuration.dll
-rw-r--r--. 1 root root   37752 4月   3 17:31 Microsoft.Extensions.DependencyInjection.Abstractions.dll
-rw-r--r--. 1 root root   72568 4月   3 17:31 Microsoft.Extensions.DependencyInjection.dll
-rw-r--r--. 1 root root   48504 4月   3 17:31 Microsoft.Extensions.Logging.Abstractions.dll
-rw-r--r--. 1 root root   34168 4月   3 17:31 Microsoft.Extensions.Logging.dll
-rw-r--r--. 1 root root   50552 4月   3 17:31 Microsoft.Extensions.Options.dll
-rw-r--r--. 1 root root   38776 4月   3 17:31 Microsoft.Extensions.Primitives.dll
-rw-r--r--. 1 root root  523264 4月   3 17:31 MySqlConnector.dll
-rw-r--r--. 1 root root  656384 4月   3 17:31 Newtonsoft.Json.dll
-rw-r--r--. 1 root root  319488 4月   3 17:31 Pomelo.EntityFrameworkCore.MySql.dll
-rw-r--r--. 1 root root    8704 4月   3 17:31 Pomelo.JsonObject.dll
-rw-r--r--. 1 root root  180096 4月   3 17:31 System.Collections.Immutable.dll
-rw-r--r--. 1 root root   51584 4月   3 17:31 System.Diagnostics.DiagnosticSource.dll
-rw-r--r--. 1 root root     568 4月   3 17:31 web.config
-rw-r--r--. 1 root root  129563 4月   3 17:31 Xia.CoreDapperAutoFacApi.deps.json
-rw-r--r--. 1 root root   12288 4月   3 17:31 Xia.CoreDapperAutoFacApi.dll
-rw-r--r--. 1 root root  174592 4月   3 17:31 Xia.CoreDapperAutoFacApi.exe
-rw-r--r--. 1 root root   21356 4月   3 17:31 Xia.CoreDapperAutoFacApi.pdb
-rw-r--r--. 1 root root     311 4月   3 17:31 Xia.CoreDapperAutoFacApi.runtimeconfig.json
-rw-r--r--. 1 root root   16384 4月   3 17:31 Xia.Dapper.dll
-rw-r--r--. 1 root root   13760 4月   3 17:31 Xia.Dapper.pdb
-rw-r--r--. 1 root root    4096 4月   3 17:31 Xia.IService.dll
-rw-r--r--. 1 root root    9316 4月   3 17:31 Xia.IService.pdb
-rw-r--r--. 1 root root    4608 4月   3 17:31 Xia.Model.dll
-rw-r--r--. 1 root root    9444 4月   3 17:31 Xia.Model.pdb
-rw-r--r--. 1 root root    4608 4月   3 17:31 Xia.Service.dll
-rw-r--r--. 1 root root   11460 4月   3 17:31 Xia.Service.pdb

3. 构建Docker镜像

在此目录下执行构建docker镜像命令

docker build -t coredapperautofac:v1 .

等待构建镜像完成,如看到即表示构建成功

Successfully built 1833628f708d
Successfully tagged coredapperautofac:v1

查看构建的镜像文件

[root@localhost dotnet]# docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
coredapperautofac                      v1                  1833628f708d        9 seconds ago       288MB

运行镜像文件

docker run -d -p 80:5000 --restart=always --name coredapperautofacapi coredapperautofac:v1

执行下面命令运行生成的容器,需要注意一下几点:

  1. 挂载目录,映射容器内目录到宿主机,如文件下载、上传等
  2. 端口,宿主机与容器内端口号映射,容器内端口号要保证与Dockerfile文件内一致
  3. 自动重启,设置restart属性为always,防止宿主机或者docker重启后容器停止

查看镜像运行情况

CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                  NAMES
12c1f99cf152        coredapperautofac:v1   "dotnet Xia.CoreDapp…"   6 seconds ago       Up 6 seconds        0.0.0.0:80->5000/tcp   coredapperautofacapi

防火墙开启80端口访问,运行网页访问接口成功

net网站如何部署到docker docker 部署net core_服务器