通过GitLab CI 自动部署.netcore api到Docker(一)在Docker 容中运行.net core API
点击上方“dotNET名人堂”,选择“”
用学习的姿态,步入工作的状态
为什么要写这个?
在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效、稳定、可扩展,有时候还不得不考虑成本的问题。我希望能找到比较完整的开源解决方案来解决持续集成、监控报警、以及扩容和高可用性的问题。是学习和探索的过程分享给大家,也欢迎同行的人交流。
先来一个三步曲,我们将完成通过GitLab CI 自动部署 net core web api 到Docker 容器的一个示例。这是第一步,通过此文您将了解如何将net core web api 运行在Docker容器中。
在Docker 容中运行Asp.net Core web API
用Docker 5分钟搭一套Gitlab 环境
-
用GitLab CI 完成 .Net Core API 的自动部署
以上所有示例将在Mac中完成。
我们将对Docker进行一些初步的介绍,安装以及基本的操作;然后我们会创建一个最简单的 netcore web api 并让它在Docker中运行。
Docker的安装
当然Mac上的安装是非常简单的,只需要到Docker的官网上下载一个docker for mac的安装包就可以了。安装完之后,就会在顶部的状态栏中看到Docker的图标。
关于镜像的问题
如果不使用国内镜像的话,下载image将会非常的慢。在阿里云中可以申请一个自己的加速地址,速度是非常不错的。进入阿里云控制台-> 产品与服务-> 容器服务 下的镜像仓库控制台 可以在Docker Hub镜像站点中找到。
在Docker中配置镜像:
安装完之后可以在terminal中输入docker info 来检测是否安装正常。
Docker的入门使用
下面介绍一些简单的Docker命令,以便从来没有实践过Docker的同学来了解我们接下来要做的事情。
当我们刚开始安装完Docker之后,本地是没有任何的镜像的。永远的入门第一步,下载一个hello-world的镜像然后运行它。
helloworld是镜像的名称,我们默认连接的是docker hub也就是官方提供的镜像仓库,当然我们也可以连接其它的甚至建立自己的镜像仓库。当本地没有 helloworld这个镜像的时候,Docker就会自动去下载这个镜像到本地。
关于DockerFile
docker build命令在构建一个image的时候所需要的信息都在DockerFile中。比如我们接下来要运行的一个asp.net core api 的容器大概需要这样几步:
安装并运行.net core web api
在Mac上安装net core ,首先需要下载更新最新的OpenSSL
然后可以到官网下载net core 1.1 on MacOS,完成之后可以在命令行输入 dotnet --version 来检测当前的版本。
初始化项目并运行
通过3个命领我们可以完成初始化项目并运行的全过程: dotnet new|restore|run。dotnet 框架默认提供一些初始化的项目模板,可以输入dotnet new -all来查看。
我们可以用 dotnet new webapi 来初始化一个与文件夹名称相同的 webapi项目,也可以在后面加 -n自定义一个项目名称。然后接着在命令行中进入项目的目录输入 dotnet restore,最后用 dotnet run来运行这个web api 项目。
接着就可以在本地浏览这个api:
到这里我们的dotnet core web api已经运行在本地了,接下来我们就要让它运行在Docker中。
在Docker中运行dotnet core web api
上面我们已经讲过DockerFile以及一个net core web api 中应该如何配置它。我们会把它放到项目的根目录里。可以用Visual studio for mac 打开整个web api项目。
接下来我们要做的就是把我们这个代码构建成一个镜像。
我们在terminal中进行项目的根目录,输入 docker build -t myapiimage .
完成之后输入 docker images 可以查看到我们刚刚创建的镜像
接下来我们就可以用 docker run 用刚刚这个镜像启动一个容器运行在host的 8080端口。
这个时候我们再访问之前的api就需要通过8080端口,而此时的 api 已经是在容器中运行的。
到这里我们已经完成了第一步,在Docker容器中顺利运行了我们的net core web api。后面一篇将介绍如何利用Docker快速部署一套GitLab的环境。