在Docker容器中运行.Net Core web Api项目

时间:2021-11-23 12:37:23

安装Docker环境

参考本人这篇《CentOS 7 下Docker的安装》文章进行安装以及环境配置,这里不做赘述。

通过.NetCore开发WebApi项目

1. 创建.Net Core Web项目,如下图所示:

在Docker容器中运行.Net Core web Api项目

这里我们选择Web API模板进行项目创建,为了简单起见,我们不做身份验证,也不选择 Host in cloud,点击ok项目及创建好

在Docker容器中运行.Net Core web Api项目

默认的项目文件结构如图所示:

在Docker容器中运行.Net Core web Api项目

在cmd 执行dotnet restore 恢复依赖包

在Docker容器中运行.Net Core web Api项目

运行项目,在浏览器就可以查看到结果

在Docker容器中运行.Net Core web Api项目

至此,一个简单的.Net Core开发的Web API项目就做好了

现在我们就把它放到Docker中运行。

Docker中运行

1. 首先我们先修改一下项目文件,主要是Program.cs和project.json

在Docker容器中运行.Net Core web Api项目

在Program.cs文件中加 .UseUrls("http://*:9001")是为了让来自所有IP的请求都可以访问这个API,当然也可以写成.UseUrls("http://0.0.0.0:9001") 作用一样,9001是公布出去的端口号。

另外一个修改的文件就是project.json,注释掉type那行以及scripts。添加

"runtimes": {
    "debian.8-x64": { }
  }

因为我这里代码目标运行的机器是debian系统的docker镜像,所以runtimes写成了debian.8-x64。你可以按照你实际情况配置

在Docker容器中运行.Net Core web Api项目

在Docker容器中运行.Net Core web Api项目

2. 发布程序到文件系统

在Docker容器中运行.Net Core web Api项目

发布成功后,会在项目目录下面生成发布好的文件

在Docker容器中运行.Net Core web Api项目

将发布成功的文件打个压缩包,上传到Linux机器上,并且解压到一个目录中, 进入到这个目录中

新建一个Dockerfile文件 <touch Dockerfile>, 这个文件的作用是构建一个Docker运行镜像。其中所需要填写的内容如下:


 FROM microsoft/dotnet:latest

 RUN mkdir -p /usr/src/app/DockerTest

 COPY . /usr/src/app/DockerTest

 WORKDIR /usr/src/app/DockerTest

 EXPOSE 

 CMD ["dotnet", "DockerTest.dll", "--server.urls", "http://*:9002"]
上面内容第1行代表在microsoft/dotnet:latest基础上面构建Docker镜像(这个微软dotnet镜像是以debian系统构建生成的)

第2行是表示新建一个DockerTest目录

第3行是将当前目录下面的所有文件都复制到刚才新建的DockerTest目录下面

第4行是将程序工作目录切换到DockerTest

第5行是将9002端口公布出去

第6行是执行dotnet DockerTest.dll 命令

Dockerfile文件编辑好后,执行docker build -t docker_test . 如下图所示生成docker_test镜像文件

在Docker容器中运行.Net Core web Api项目

通过docker images命令可以查看刚才新建的docker_test镜像

在Docker容器中运行.Net Core web Api项目

运行docker_test镜像创建出来的容器

在Docker容器中运行.Net Core web Api项目

通过浏览器访问此docker容器Host起来的service

在Docker容器中运行.Net Core web Api项目

在Docker容器中运行.Net Core web Api项目
在Docker容器中运行.Net Core web Api项目
在Docker容器中运行.Net Core web Api项目
在Docker容器中运行.Net Core web Api项目
在Docker容器中运行.Net Core web Api项目
在Docker容器中运行.Net Core web Api项目
在Docker容器中运行.Net Core web Api项目
在Docker容器中运行.Net Core web Api项目
在Docker容器中运行.Net Core web Api项目
在Docker容器中运行.Net Core web Api项目
在Docker容器中运行.Net Core web Api项目
在Docker容器中运行.Net Core web Api项目