Docker 自动化部署
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 自动化部署相关推荐
- CentOS7.3下Jenkins+docker自动化部署solo站点
在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署.交付(CD). 持续集成(CI)表示由开发对项目代码进行确认修 ...
- docker自动化部署
安装jdk 1)添加jdk 2)解压并移动 3)环境变量 vim /etc/profile 生效:source /etc/profile 4)查看是否成功 Java -version 二.安装t ...
- 解放双手,基于github travis-ci docker自动化部署java项目
前言 最近在写一些小玩具的时候,一次次的测试,打包,部署流程太麻烦了,正好代码都放在github上,于是就是打算用travis-ci来进行持续集成 解放双手. 实现思路 dockerfile + do ...
- Jenkins+Docker自动化部署项目
看到了一篇文章,实操一下自动部署的感觉.参看地址:原文 首先更新docker,我更新到了 [root@localhost springboot]# docker --version Docker ve ...
- Docker自动化部署安装(五)之安装portainer-docker容器管理工具
本片主要讲述使用docker安装portainer(docker容器管理工具),直接上过程,亲测无误! 如图: 一.创建docker-tools.yml,方便管理 echo ' version: '3 ...
- 在AWS EC2上搭建jenkins并且整合git+maven+docker自动化部署环境(一)
日以继日这套环境终于搭建好了,并且能够一键打包部署服务,这个环境我打算分成几个章节来说明,本章节介绍如何在AWS配置搭建EC2服务 AWS上部署搭建EC2实例 aws是一个云平台,里面有很多组件,比如 ...
- 基于Gitlab Jenkins Docker集群 微服务搭建自动化部署平台
随着公司应用系统的不断增多,原有手工部署流程越来越不满足上线的需求.为了各个系统能快速迭代与测试,减少上线流程时间和人为出错,迫切需要一套自动化部署系统. 转载原文:https://luoji.liv ...
- 公有云环境下应用程序的自动化部署与水平扩展问题
先介绍了一下公有云计算环境下的一些特点,再根据这些特点探讨一下作为云计算用户而言,如何对应用程序做好自动化部署和水平扩展(弹性计算)的问题.阅读本文需要有一定的云计算知识.开发运维知识. 公有云环境的 ...
- 一篇文章上手docker(原理,部署,使用,坑)
(一)定义与介绍 前言:与虚拟机技术比较: 虚拟机(VM):在docker容器技术出现之前使用的是虚拟机技术,将一台物理机虚拟化为多台机器,可搭载不同的操作系统.但每一个虚拟机系统的消耗较大,都需安装 ...
- 基于 Docker 和 GitLab 的前端自动化部署实践笔记
基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...
最新文章
- 团队如何实施敏捷开发以及Scrum电子看板工具
- 「每周CV论文推荐」 初学深度学习人脸关键点检测必读文章
- Sahi (2) —— https/SSL配置(102 Tutorial)
- IE7不能显示PNG
- 使用Jsonp(JQ+C#)
- 实时视频传输中的BBR拥塞控制
- 显示日历的指令:cal
- MOTChallenge榜单第一!用于多目标跟踪简单高效的数据关联方法 BYTE
- python面试题37道(附答案)看完面试不愁了
- 来!喝杯可乐!让你秒懂 MVP 架构模式 | 原力计划
- pytest与unittest区别
- [转贴]什么计算机语言最有前途
- 从写博文,看模块化思维的应用
- 【TPshop踩雷篇 — 数据库连接配置失败】
- 如何安装并且运行阿帕奇服务器 for windows
- xign跨平台游戏引擎演示
- elementUI中级联选择器的使用
- app的崩溃率标准,优秀,合格,轻微隐患,严重隐患
- 大一计算机思维知识点,大学计算机基础教学中计算思维的培养途径
- 《禅与摩托车维修艺术》摘录(二)