破浪前行的一条鱼 博客

Docker系列--3.Docker部署.Net Core

说明

使用Docker部署.Net Core 2.2,如无Docker环境查看搭建教程

  • 环境:Centos 7、Docker-ce(19.03.12)
  • .Net Core版本:2.2

步骤

  1. 创建.Net Core项目以及创建Dockerfile文件
  2. 发布项目并上传到虚拟机
  3. 使用docker编译项目
  4. Docker运行镜像
  5. 浏览器验证

详细步骤

1、右键项目添加Docker支持,并修改Docker文件

修改为最简单的 其他可以先移除

2、上传到虚拟机并执行编译

  • 上传成功后有以下几个文件
[root@localhost docker_mvc]# ll
总用量 260
-rw-r--r--. 1 root root    105 8月  22 18:18 appsettings.json
-rw-r--r--. 1 root root    391 8月  22 18:18 Dockerfile
-rw-r--r--. 1 root root 235296 8月  22 18:18 Docker.TestMvc.deps.json
-rw-r--r--. 1 root root   7168 8月  22 18:18 Docker.TestMvc.dll
-rw-r--r--. 1 root root   1636 8月  22 18:18 Docker.TestMvc.pdb
-rw-r--r--. 1 root root    224 8月  22 18:18 Docker.TestMvc.runtimeconfig.json
-rw-r--r--. 1 root root    558 8月  22 18:18 web.config

  • docker编译 docker build -t dockertestmvc .

dockertestmvc 为镜像名称 可自定义

docker images 查看编译成功的镜像 可以看到dockertestmvc 这个镜像

docker build 命令后面有个 . 切记表示当前目录

 [root@localhost docker_mvc]# docker build -t dockertestmvc .
Sending build context to Docker daemon  251.9kB
Step 1/5 : FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
 ---> e7e3b238011c
Step 2/5 : WORKDIR /app
 ---> Running in 732887014cc6
Removing intermediate container 732887014cc6
 ---> c7eae96168d2
Step 3/5 : EXPOSE 5000
 ---> Running in 4906a346543d
Removing intermediate container 4906a346543d
 ---> cf4c8b169f94
Step 4/5 : COPY . /app
 ---> 0d63dbfdfdad
Step 5/5 : ENTRYPOINT ["dotnet", "Docker.TestMvc.dll"]
 ---> Running in 5bf8e0988178
Removing intermediate container 5bf8e0988178
 ---> f9cb68e0cd91
Successfully built f9cb68e0cd91
Successfully tagged dockertestmvc:latest
[root@localhost docker_mvc]# docker images
REPOSITORY                                                              TAG                 IMAGE ID            CREATED             SIZE
dockertestmvc                                                           latest              f9cb68e0cd91        24 seconds ago      261MB
mcr.microsoft.com/dotnet/core/aspnet                                    2.2-stretch-slim    e7e3b238011c        7 months ago        261MB

3、Docker运行镜像 并验证

  • docker run 运行容器 docker run --name 容器名 -d -p 寄主机端口:容器端口(dockerfile里面暴露的端口) 镜像名
  • docker ps 正在运行的容器 可以看到本机8000映射到了容器的80端口 浏览器访问本机8000端口即可验证成功
  • docker logs 容器Id 可查看日志
[root@localhost docker_mvc]# docker run --name docker-test -d -p 8000:80 dockertestmvc
2b25e79756072af208b928d0170754eee0d98d514996dca5603ddf3b699af077
[root@localhost docker_mvc]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
27c09333e28c        dockertestmvc       "dotnet Docker.TestM…"   24 seconds ago      Up 22 seconds       0.0.0.0:8000->80/tcp   docker-test



[root@localhost docker_mvc]# docker logs 2b25e7975607
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      No XML encryptor configured. Key {23c83ac3-bc8d-4b42-83fe-4aa005e20e64} may be persisted to storage in unencrypted form.
Hosting environment: Production
Content root path: /app
Now listening on: http://[::]:80
Application started. Press Ctrl+C to shut down.


  • 浏览器验证

QA

1、若直接使用 mcr.microsoft.com 镜像编译时会很卡。查看教程搭建私有仓储

参考

.NET Core微服务之ASP.NET Core on Docker

Docker常用命令

Docker 命令大全

本原创文章未经允许不得转载 | 当前页面:破浪前行的一条鱼 博客 » Docker系列--3.Docker部署.Net Core

评论