Docker 自动化部署

yum -y install dockersystemctl daemon-reload && systemctl restart docker

查看docker版本

docker version

安装 GitLab Runner

在具有gitlab的机子上安装 GitLab Runner

Runner 可以 Shell 方式也可以以 Docker 容器方式运行。Shell 比较简单,问题会比较少。 用 Docker Container 方式一台机器可以装多个 Runner。本文中 GitLab Runner 和 GitLab 安 装在同一台机器,装容器方式装多个会有性能问题,所以用简单的 Shell 方式。 官方参考文档:

https://docs.GitLab.com/runner/install/linux-repository.html
https://docs.gitlab.com/runner/

获取 Runner Token
打开 GitLab 网页,按下图指示,找到注册 token。

注册 Runner

官方文档参考:https://docs.GitLab.com/runner/register/index.html

注册成功显示:

Registering runner... succeeded runner=KZi5yDuK
Runner registered successfully. Feel free to start it, but if it's running already the config should
be automatically reloaded!

本文使用 socket binding 方式运行 docker,需修改/etc/gitlab-runner/config.toml 为 socket binding 方式,并添加 maven 库目录的本地映射,这样每次打包时不需要重下依赖包。另 外末尾加上 pull_policy = “if-not-present”,这样不会每次都拉镜像。

检查结果
打开 GitLab > Admin > Runners,如下图看到 Runner 列表即为成功。


创建 kubectl 镜像
需要一个 kubectl 镜像在 Gitlab 服务器上运行,并能远程连接 K8S 服务器的镜像。 kubectl的版本根据你安装的k8s而定。

Dockerfile:

FROM lachlanevenson/k8s-kubectl:v1.18.5
LABEL maintainer="key_dong@huatek.com"
ENV KUBE_LATEST_VERSION="v1.18.5"
ADD admin.conf /root/.kube/config
WORKDIR /root

编译上传

docker build -t kubectl:1.18.5 .
docker push kubectl:1.18.5

部署
#新建.gitlab-ci.yml

内容为:

variables:
MAVEN_OPTS: "-Dmaven.repo.local=/root/.m2/repository"  # 指定maven本地库路径
DOCKER_DRIVER: overlay2                                # 用overlay2优化性能
PROJECT_NAME: $CI_PROJECT_NAME                         # 用Gitlab工程名环境变量做后面打包的名字
PROJECT_VERSION: "2.0.0"stages:
- build
- deploymaven-build:
stage: build
script: - mvn package -B -DskipTests                                        # 跳过测试节省时间- mv target/$CI_PROJECT_NAME*.jar target/app.jar                    # 打好的包重命名为app.jar - docker build -t docker镜像 . #  生成docker镜像- docker push docker镜像       #   提交到镜像库
artifacts:paths:- ./*.yaml    k8s-deploy:
stage: deploy
only:- master  # 只不是master节点
image: name: k8s-kubectl:1.18.5   # 根据自己推送的地址改动 entrypoint: [""]
script:    #- /usr/bin/kubectl delete -f Deployment.yaml       # 如果第一次部署请注释掉  - /usr/bin/kubectl create -f Deployment.yaml- /usr/bin/kubectl set env deploy/$PROJECT_NAME DEPLOY_DATE="$(date)"  # 让k8s强制更新镜像

Deployment.yaml

---
apiVersion: apps/v1
kind: Deployment
metadata:
name:  自定义名称
labels:app:  自定义名称version:  自定义版本号
spec:
selector:matchLabels:app:  自定义名称
replicas: 1
template:metadata:labels:app:  自定义名称spec:containers:- name: 自定义名称image: 镜像地址imagePullPolicy: Alwaysenv:- 启动参数
---
apiVersion: v1
kind: Service
metadata:
name: torch-gen
labels:app: 自定义名称version: 自定义版本
spec:
selector:app:  自定义名称
type: LoadBalancer

完成,当提交master节点代码时候 就会自己部署到k8s docker中

Docker 自动化部署相关推荐

  1. CentOS7.3下Jenkins+docker自动化部署solo站点

    在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署.交付(CD). 持续集成(CI)表示由开发对项目代码进行确认修 ...

  2. docker自动化部署

    安装jdk 1)添加jdk 2)解压并移动 3)环境变量 vim  /etc/profile 生效:source  /etc/profile 4)查看是否成功 Java  -version 二.安装t ...

  3. 解放双手,基于github travis-ci docker自动化部署java项目

    前言 最近在写一些小玩具的时候,一次次的测试,打包,部署流程太麻烦了,正好代码都放在github上,于是就是打算用travis-ci来进行持续集成 解放双手. 实现思路 dockerfile + do ...

  4. Jenkins+Docker自动化部署项目

    看到了一篇文章,实操一下自动部署的感觉.参看地址:原文 首先更新docker,我更新到了 [root@localhost springboot]# docker --version Docker ve ...

  5. Docker自动化部署安装(五)之安装portainer-docker容器管理工具

    本片主要讲述使用docker安装portainer(docker容器管理工具),直接上过程,亲测无误! 如图: 一.创建docker-tools.yml,方便管理 echo ' version: '3 ...

  6. 在AWS EC2上搭建jenkins并且整合git+maven+docker自动化部署环境(一)

    日以继日这套环境终于搭建好了,并且能够一键打包部署服务,这个环境我打算分成几个章节来说明,本章节介绍如何在AWS配置搭建EC2服务 AWS上部署搭建EC2实例 aws是一个云平台,里面有很多组件,比如 ...

  7. 基于Gitlab Jenkins Docker集群 微服务搭建自动化部署平台

    随着公司应用系统的不断增多,原有手工部署流程越来越不满足上线的需求.为了各个系统能快速迭代与测试,减少上线流程时间和人为出错,迫切需要一套自动化部署系统. 转载原文:https://luoji.liv ...

  8. 公有云环境下应用程序的自动化部署与水平扩展问题

    先介绍了一下公有云计算环境下的一些特点,再根据这些特点探讨一下作为云计算用户而言,如何对应用程序做好自动化部署和水平扩展(弹性计算)的问题.阅读本文需要有一定的云计算知识.开发运维知识. 公有云环境的 ...

  9. 一篇文章上手docker(原理,部署,使用,坑)

    (一)定义与介绍 前言:与虚拟机技术比较: 虚拟机(VM):在docker容器技术出现之前使用的是虚拟机技术,将一台物理机虚拟化为多台机器,可搭载不同的操作系统.但每一个虚拟机系统的消耗较大,都需安装 ...

  10. 基于 Docker 和 GitLab 的前端自动化部署实践笔记

    基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...

最新文章

  1. 团队如何实施敏捷开发以及Scrum电子看板工具
  2. 「每周CV论文推荐」 初学深度学习人脸关键点检测必读文章
  3. Sahi (2) —— https/SSL配置(102 Tutorial)
  4. IE7不能显示PNG
  5. 使用Jsonp(JQ+C#)
  6. 实时视频传输中的BBR拥塞控制
  7. 显示日历的指令:cal
  8. MOTChallenge榜单第一!用于多目标跟踪简单高效的数据关联方法 BYTE
  9. python面试题37道(附答案)看完面试不愁了
  10. 来!喝杯可乐!让你秒懂 MVP 架构模式 | 原力计划
  11. pytest与unittest区别
  12. [转贴]什么计算机语言最有前途
  13. 从写博文,看模块化思维的应用
  14. 【TPshop踩雷篇 — 数据库连接配置失败】
  15. 如何安装并且运行阿帕奇服务器 for windows
  16. xign跨平台游戏引擎演示
  17. elementUI中级联选择器的使用
  18. app的崩溃率标准,优秀,合格,轻微隐患,严重隐患
  19. 大一计算机思维知识点,大学计算机基础教学中计算思维的培养途径
  20. 《禅与摩托车维修艺术》摘录(二)

热门文章

  1. java基础简答题1
  2. 解决Kafka-1194问题
  3. 浙大PAT 1013题 1013. Battle Over Cities
  4. JS逆向加密——AES加密解密
  5. 没想到,拼多多竟然想用AI种草莓给我吃
  6. 《互联网周刊》:移动学习在路上
  7. 《互联网周刊》发布2019快时尚品牌排行榜
  8. 凯明启示录:倒闭风潮刚开始
  9. web网站添加ico图标
  10. mysql复制一行sql语句_MySQL复制表数据操作sql语句