在 CentOS 中通过 Docker 部署 ASP.NET Core

1 创建项目

打开“Visual Studio 2019”,选择“创建新项目”,找到“ASP.NET Core Web 应用程序”模板,点击“下一步”进入“配置新项目”界面,填写“项目名称”,选择保存的位置,根据需要填写解决方案名称后点击“创建”按钮。

为了简单起见,在“创建新的 ASP.NET Core Web 应用程序”界面中选择“Web 应用程序(模型视图控制器)”,去掉“为 HTTPS 配置”勾选,然后勾选“启用 Docker 支持”,并点击“创建”按钮。

2 编写 Dockerfile

在 Dockerfile 文件中(如果没有 Dockerfile 文件,说明创建项目时未选择“启用 Docker 支持”,可以在解决方案下右击项目名称,选择“添加”,然后点击“Docker 支持…”)编写以下代码:

FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
MAINTAINER LiKui <admin@thiscoder.com>

WORKDIR /app
COPY . /app

EXPOSE 80

ENTRYPOINT ["dotnet", "xxx.dll"]

具体 Dockerfile 的语法请参考 Dockerfile reference

需要注意的是:在解决方案下的项目中,右击 Dockerfile 文件,选择“属性”,将“复制到输出目录”修改为“如果较新则复制”(这样做的目的是,发布时将 Dockerfile 文件复制到发布目录中)。

3 发布

在解决方案下右击项目名称,选择“发布”,“选取发布目标”中选择“文件夹”方式,并根据需要选择发布文件保存位置,点击“创建配置文件”,然后点击“发布”按钮即可。发布完成后将 publish 文件夹打包成 zip 压缩包,方便下一步上传到服务器。

4 上传文件

使用 Xshell + lrzsz 将发布后的文件上传到远程服务器(你也可以使用其他 FTP 工具进行上传)。

通过 Xshell 连接到远程服务器后,使用 rz命令会弹出文件选择对话窗口,选择上面打包好的文件,点击“打开”即可开发上传。

需要注意的是:a、lrzsz 无法直接上传文件夹,可以先手动压缩为 zip 包后再上传,这样也方便上传后解压;b、如果提示:-bash: rz: command not found,说明没有安装 lrzsz 工具,请自行安装。

5 解压文件

上传完成后,使用 unzip 工具解压文件到当前目录,如果提示:-bash: unzip: command not found,请先安装 unzip 工具。

unzip xxx.zip

6 打包镜像

解压完成后,cd xxx 进入发布文件夹中,并使用以下 docker build 命令打包 docker 镜像:

docker build -t xxx .

具体 Docker 的语法请参考 Docker Documentation

如果提示:-bash: docker: command not found,请先自行安装 docker。若提示:unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /root/xxx/Dockerfile: no such file or directory,说明发布文件中没有包含 Dockerfile 文件,解决办法请参看第2节的注意事项,你也可以直接将 Dockerfile 文件复制到发布文件中即可。

打包过程如下所示:

[root@izwz9fb67b4faqfksk97z5z xxx]# docker build -t xxx .
Sending build context to Docker daemon  4.685MB
Step 1/6 : FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
 ---> f6d51449c477
Step 2/6 : MAINTAINER LiKui <admin@thiscoder.com>
 ---> Running in c07007cbcb9f
Removing intermediate container c07007cbcb9f
 ---> 78226e00c697
Step 3/6 : WORKDIR /app
 ---> Running in d95cd288f5bc
Removing intermediate container d95cd288f5bc
 ---> a33885a021a5
Step 4/6 : COPY . /app
 ---> e297f4c6e061
Step 5/6 : EXPOSE 80
 ---> Running in 1d531fef2ab2
Removing intermediate container 1d531fef2ab2
 ---> 3d07dd6f0e43
Step 6/6 : ENTRYPOINT ["dotnet", "xxx.dll"]
 ---> Running in e41bf678f404
Removing intermediate container e41bf678f404
 ---> 8ed1a36de466
Successfully built 8ed1a36de466
Successfully tagged xxx:latest

通过以下 docker images 命令查看生成的 docker 镜像:

[root@izwz9fb67b4faqfksk97z5z ~]# docker images
REPOSITORY          TAG                      IMAGE ID            CREATED             SIZE
xxx                 latest                   8ed1a36de466        2 minutes ago       265MB
microsoft/dotnet    2.2-aspnetcore-runtime   f6d51449c477        4 months ago        260MB

7 运行 Docker 容器

通过以下 docker run 命令将 docker 镜像运行在 docker 容器中:

docker run --name=xxx -d -p 8080:80 xxx

使用以下 docker ps 命令查看正在运行的docker 容器:

[root@izwz9fb67b4faqfksk97z5z ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                            NAMES
13f54328aefc        xxx                 "dotnet xxx.dll"   4 seconds ago       Up 3 seconds        80/tcp, 0.0.0.0:8080->80/tcp   xxx

8 访问测试

配置 Nginx、域名、防火墙,并开放入方向的端口(一般80端口默认已经开放,其他端口根据具体情况进行开放;如果是云服务器,可能还需要在管理控制台中进行配置)后,通过浏览器访问进行测试查看效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值