前端篇文章中,我们已经成功的将asp.net core webapi在Docker容器中运行,并且部署了一套自己的GitLab环境。

.Net & Docker(二)5分钟快速用Docker部署你自己的GitLab

.Net & Docker(一)在Docker容器上运行.Net Core API

接下来我们将用GitLab CI 来做到当有代码提交时自动部署asp.net core web api到Docker容器。

  • GitLab CI 介绍

  • 安装本地Shell Runner

  • 注册Runner

  • 编辑 .gitlab-ci.yml 执行任务

GitLab CI 介绍

GitLab CI 是GitLab的一部分,提供了一套UI及API用来管理项目的构建等。每一个构建请求称之为job,而这些job最后会被指定的Runner来执行。

Runner是GitLab CI的重要组件之一,它可以部署在独立的服务器上,不影响GitLab服务器。

GitLab CI 支持多平台(Windows、OSX、Unix) 多语言(Java、Php、Ruby等),这其中自然也包括C#。它还有以下几个特性:

  • 分布式运行:多服务器、并行

  • 可以运行在本地、Docker容器、SSH Remote等

  • 支持批处理:windows、Power Shell (这让我们用msbuild 编译上一代的.net程序有了可能)

Runner三步走:

  1. 安装

  2. 注册

  3. 使用

在使用也就是执行阶段,GitLab Runner 给我们提供了以下7种执行方式。官方称之为 executors。

  • Shell

  • Docker

  • Docker Machine

  • Parallels

  • VirtualBox

  • SSH

  • Kubernetes

在注册Runner阶段,我们就需要选择executor,我们今天将选择使用本地Shell这种大家最熟悉的方式来执行作业Job。

安装本地Shell Runner

  1. 下载安装

sudo curl --output /usr/local/bin/gitlab-runnerhttps://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-darwin-amd64

2. 提升权限

sudo chmod +x /usr/local/bin/gitlab-runner

注册Runner

1. 输入以下命令启动注册

sudo gitlab-runner registerPlease enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )

2. 我们会输入 http://127.0.0.1 也就是我们安装在本地的GitLab

3. Please enter the gitlab-ci token for this runner 要求输入 gitlab-ci token

在项目的 Settings->Pipelines中可以找到

4. 输入描述

5. 输入tag(留空也可以,之后可以进行编辑 )

6. 选择当遇到没有打标签的提交时是否会执行,我们选 true

7. 是否锁定此runner 到当前项目, 我们选 false

8. 先一个执行者 executor

这一步比较重要 (ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell) 我们先shell在本地执行。

9. 选择默认使用的镜像:microsoft/dotnet:latest

在注册完之后,我们可以在GitLab获取gitlab-ci token 的页面看到我们刚刚注册的这个 runner

编辑.gitlab-ci.yml 执行任务

这是我们今天的最后一步,也非常简单。我们只需要在根目录添加 .gitlab-ci.yml的 输入两行命令即可。

build_image:  script:    - docker build -t my-docker-image .    - docker run -t -p 8080:80 my-docker-image

而这两句命令就是我们自己去构建镜像,以及运行容器的命令只不过由 gitlab-ci runner 来执行而已。

我们最后要做的只需要提交一份代码即可:

编辑了一下 .gitlab-ci.yml文件并把它提交到gitlab。

这个commit下会有一个任务被自动触发执行,查看这个任务,和我们在命令行执行 docker build 和 docker run 没有什么两样 。

最后我们可以直接访问重新编译之后的结果 。

docker images

查看我们的镜像列表, my-docker-image刚刚被更新。

docker ps

查看我们的容器列表,基于 my-docker-image 启动的容器也已经被更新。

到这里我们已经完成了 dotnet core api 自动部署到 Docker 的全部过程,有了CI持续集成之后,我们开发完成代码自测通过之后只需要提交代码即可自动发布到测试完成(测试通过之后,还可以一键部署到生产环境)需要人工操作。同时还可以在CI中加入自动化测试,以保障开发快速稳定地迭代。

点击左下角【阅读原文】格式体验更佳

docker 部署_GitLab CI 自动部署netcore web api 到Docker相关推荐

  1. GitLab CI 自动部署netcore web api 到Docker

    前端篇文章中,我们已经成功的将asp.net core webapi在Docker容器中运行,并且部署了一套自己的GitLab环境. .Net & Docker(二)5分钟快速用Docker部 ...

  2. 使用Travis CI自动部署Hexo博客

    自从使用GitHub Pages和Hexo来发布博客之后,不得不说方便了许多,只需要几个简单的命令博客就发布了.但在不断的使用中发现每次的发布操作也挺耗时的. 我一般的操作是将平时整理好的md文件放到 ...

  3. Docker容器环境下ASP.NET Core Web API应用程序的调试

    本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...

  4. Neodynamic ZPLPrinter Web API for Docker

    Neodynamic ZPLPrinter Web API for Docker 允许您将原始 ZPL(Zebra 编程语言)命令转换.预览和渲染为众所周知的图像和文档格式,如 PNG.JPG.PDF ...

  5. 这样用Docker 搭建 Jenkins 实现自动部署,你知道吗?

     一.为什么用jenkins 主要是我们现在的项目都是采用手动部署的,每当给项目中新增一个功能就必须执行(打包--测试--上传测试修复的包到指定服务器--部署上线),这个流程操作起来繁杂,不小心就可能 ...

  6. jenkins docker 自动部署 构建_jenkins+docker+vue项目的自动部署环境

    亮点 采用shell自定义脚本,控制集成部署环境更加方便灵活 如果服务器更换,重新部署的工作量会比较小 准备工作 首先我们得有一台服务器.我这里用的是阿里云ECS,华东节点.具体的购买操作的话百度会有 ...

  7. jenkins docker 自动部署 构建_Docker_Jenkins自动部署项目

    目标服务器:安装docker→启动docker daemon进程→创建镜像→tag镜像→创建容器→push tag镜像到私服Jenkins:安装Jenkins→安装插件→配置私服地址(见下图)→创建项 ...

  8. Java自动部署maven_java项目自动部署方案(1):wagon-maven-plugin

    该方法适用于maven构建的项目,自动部署需要用到maven插件wagon-maven-plugin. 当配置插件后,部署流程如下: 客户端通过maven打包项目(package) 插件会自动将包上传 ...

  9. linux上wds部署服务,WDS自动部署服务实操——为裸机实操安装Win10

    WDS自动部署服务 Windows 部署服务(Windows Deployment Services,缩写WDS),适用与大中型网络中的计算机操作系统部署.可以使用 Windows 部署服务来管理映像 ...

最新文章

  1. 快速精确的体素GICP三维点云配准算法
  2. 关于使用AsyncTaskLoader的使用
  3. mailbox 编程_MailboxProcessor从C#
  4. mac java 版本_Mac 下 Java 多版本切换
  5. mysql数据库BigInt数据类型和实体对象中BigInteger,Long类型的冲突
  6. canvas学习之小球动画
  7. _tkinter.TclError: invalid command name “tixComboBox“ 的解决办法
  8. 用Appscan 作代理,录制APP页面的限制条件
  9. paip.utf-8,unicode编码的本质输出unicode文件原理 python
  10. IEEE期刊如何查找论文模板
  11. 【Python K均值聚类算法】
  12. 西南大学计算机试题答案,17秋西南大学计算机组成原理【0013】机考答案
  13. EXCEL常规格式数字转换为日期时间格式的方法
  14. 【暑假集训】F1方程式冠军
  15. 好用的APS系统是什么样的?
  16. 小米红米Note12,11,Pro系列安装谷歌套件谷歌服务框架GMS,Google Play商店
  17. WPF 实现柱形统计图
  18. 详细解决git本地仓库和远程仓库关联问题
  19. 字符串分割 strsep 函数
  20. R语言风险价值VaR(Value at Risk)和ES 的估计

热门文章

  1. kali linux 中文输入法,Kali Linux安装中文输入法
  2. java调用gbase存储过程,GBase 8T数据库存储过程使用出参示例
  3. java注解---@SuppressWarnings
  4. 【在线报表设计】提升报表外观的15个技巧
  5. Windows中添加自己的程序到开机启动中(添加服务,添加注册表)
  6. 机器学习之sklearn——主题模型
  7. 初见shell,设置端口参数
  8. Django实战(17):ajax !
  9. Mysql配置优化浅谈
  10. HttpClient的超时用法小记