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
执行下面命令运行生成的容器,需要注意一下几点:
- 挂载目录,映射容器内目录到宿主机,如文件下载、上传等
- 端口,宿主机与容器内端口号映射,容器内端口号要保证与Dockerfile文件内一致
- 自动重启,设置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端口访问,运行网页访问接口成功