记录使用gitlab实现Docker自动化部署

2023-05-16

目录

前言

一、gitlab-runner docker安装

二、gitlab-runner的注册与使用

1.注册

2. .gitlab-ci.yml 脚本编写

总结


前言

前面搭建了gitlab与harbor ,现在就使用它们来实现自动化docker部署。所谓自动化部署,就是提交代码到指定分支时自动触发预先写好的脚本,来实现打包,推送镜像。想要实现这个功能还需要安装gitlab-runner,下面就是记录相关步骤的流程。

一、gitlab-runner docker安装

这里仍然是docker-compose的形式来安装,内容如下:

version: "3"
services:
  gitlab-runner:
    image: "gitlab/gitlab-runner:latest"
    container_name: gitlab-runner
    restart: always
    privileged: true
    volumes:
      - "./data/gitlab-runner/config:/etc/gitlab-runner"
      - "/var/run/docker.sock:/var/run/docker.sock"

重点:这里将内部的docker 挂载出来的路劲一定是虚机中安装的docker路径,因为要在内部调用外部的docker来执行命令,如果不匹配就无法调用。

在docker-compose.yml 文件夹内执行安装命令后等待安装完成就可以了

二、gitlab-runner的注册与使用

1.注册

注册也是很简单,下面提供代码,在安装gitlab-runner的虚拟机中执行
 

sudo docker exec gitlab-runner gitlab-runner register -n \
       --url http://192.168.31.8:15482/ \           #gitlab 的ip端口
       --registration-token APRduxxLs6qye_A_K47y \  # gitlab 上的token
       --tag-list "global-runner,gitlab-test" \
       --executor docker \
       --docker-image docker \
       --docker-image alpine:latest \
       --docker-volumes /home/msq/gitlab-runner/.m2:/root/.m2 \
       --docker-volumes /home/msq/gitlab-runner/.npm:/root/.npm \
       --docker-volumes /var/run/docker.sock:/var/run/docker.sock \ #挂载出来的docker
       --description "global-runner,gitlab-test"

 执行之后这里多出绿色圆点在线,表示注册成功 了,gloabl-runner ,gitlab-test 表示tag 标签,只有用到该标签的脚本才会执行

2. .gitlab-ci.yml 脚本编写

该脚本我们可以在gitlab 项目下进入CI/CD 的编辑器,选择分支,点击配置就会自动创建

这是我的,我是配置在test分支上 

在这里我们可以编辑脚本,也可以点击浏览模板进入github上学习官方的一些模板

我这里的脚本如下:

image: docker:stable
variables:
  TAG: wxdt:0.0.1
  PROJECT_NAME: wxdt
  MAVEN_OPTS: "-Dmaven.repo.local=/root/.m2/repository"
cache:
  key: dockerlayer-ci-cache
  paths:
    - .m2/repository
    - /target/wxdt.jar
stages:
  - package
  - deploy
  - push-image
maven-package:
  image: maven:3.5-jdk-8-alpine
  stage: package
  tags:
    - gitlab-test
  script:
    - mvn clean package -Dmaven.test.skip=true -P test $MAVEN_OPTS --settings=/root/.m2/settings.xml
  cache:
    key: dockerlayer-ci-cache
    paths:
      - target/*.jar
  only:
    - test
build-test:
  stage: deploy
  tags:
    - gitlab-test
  cache:
    key: dockerlayer-ci-cache
    paths:
      - .m2/repository/
      - target/*.jar 
  script:
    - docker build -t $TAG .
    - docker rm -f $PROJECT_NAME || true
    - docker run -d --name $PROJECT_NAME --restart=always -v /home/msq/公共/msq/logs/wxdt:/logs -p 18082:18082 $TAG
  after_script:
    - docker rmi $(docker images -f "dangling=true" -q)  
  only:
    - test
docker-push:
  stage: push-image
  tags: 
    - gitlab-test
  before_script:
    - docker login http://192.168.31.22 -u admin -p Harbor12345  
  script: 
    - docker tag $TAG 192.168.31.22/msq/$TAG
    - docker push 192.168.31.22/msq/$TAG
  only: 
    - test






    

简单说明一下,我这里是三个步骤,maven打包 --》docker 启动 --》镜像推送仓库

脚本执行的页面如下:

 点击进入可以看到执行日志

 推送成功后我们到仓库中看到,下面就是推送成功了

 项目是否执行成功进入虚机中执行docker ps 查看

 可以看到项目在docker中运行成功了,可查看日志docker logs -f wxdt

 


总结

兴趣是学习的最好的动力,再接再厉,继续深入研究。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记录使用gitlab实现Docker自动化部署 的相关文章

随机推荐

  • 小程序、公众号开发报code been used(40163)或invalid code(40029)错误,解决方案--之--搞清楚微信的登录机制,保存登录状态!!!

    x1f4d6 前言 做微信小程序或公众号开发 xff0c 有时我们为了管理用户 xff0c 需要获取用户的openid xff0c unionId等信息 这时会用到微信提供的接口 xff1a code2Session code2Sessio
  • 使用git在vscode中进行版本控制

    版本控制是一件非常cool的事 xff0c 可以将我们的代码按照版本存储 1 首先我们选择一个版本控制工具 xff0c 这里我们选择git xff0c 点击下载安装 xff0c 安装时选择vscode编辑器 2 安装好了之后打开vscode
  • 2.3.1 参数服务器理论模型

    ROS入门 2 3 1 参数服务器理论模型 ROS入门 理论与实践 视频教程镇楼 参数服务器实现是最为简单的 xff0c 该模型如下图所示 该模型中涉及到三个角色 ROS Master 管理者 Talker 参数设置者 Listener 参
  • 4.6.3 编码设置参数

    ROS入门 4 6 3 编码设置参数 ROS入门 理论与实践 视频教程镇楼 编码的方式可以更方便的设置 全局 相对与私有参数 1 C 43 43 实现 在 C 43 43 中 xff0c 可以使用 ros param 或者 ros Node
  • 5.1 TF坐标变换

    ROS入门 5 1 TF坐标变换 ROS入门 理论与实践 视频教程镇楼 机器人系统上 xff0c 有多个传感器 xff0c 如激光雷达 摄像头等 xff0c 有的传感器是可以感知机器人周边的物体方位 或者称之为 坐标 xff0c 横向 纵向
  • 10.1.3 action通信自定义action文件调用(Python)

    ROS入门 10 1 3 action通信自定义action文件调用 Python ROS入门 理论与实践 视频教程镇楼 需求 创建两个ROS 节点 xff0c 服务器和客户端 xff0c 客户端可以向服务器发送目标数据N 一个整型数据 服
  • rosdep

    rosdep 初始化时异常解决方案 rosdep 初始化时异常解决 视频教程 安装构建依赖 在 noetic 最初发布时 xff0c 和其他历史版本稍有差异的是 没有安装构建依赖这一步骤 随着 noetic 不断完善 xff0c 官方补齐了
  • springboot应用集成prometheus监控

    环境参数 xff1a 运行命令 xff1a 1 uname xff0d a xff08 Linux查看版本当前操作系统内核信息 xff09 2 cat proc version xff08 Linux查看当前操作系统版本信息 xff09 3
  • [NVIDIA Jetson Xavier Nx]从刷机烧录到环境配置 记录

    目录 前言一 开机烧录二 环境配置Cuda环境变量配置更新源python环境配置安装Jtop 内存 CPU GPU等等资源监视工具 前言 对进行NVIDIA Jetson Xavier Nx环境配置进行记录 一 开机烧录 参考下面的博客 x
  • 最近处理的报错 -DCMAKE_BUILD_TYPE=Debug

    1 error 39 nullptr 39 was not declared in this scope 解决方法 使用的是QTcreator的pro文件 然后缺少相应关于c 43 43 11的设置 点pro文件中加载的东西如下 QMAKE
  • Halcon 单相机标定

    原文链接 xff1a https blog csdn net weixin 43197380 article details 90438976 comments 13104885 一 理论 为什么要进行单相机标定 xff1f 广义 xff1
  • 将图片嵌入Markdown文档

    将图片嵌入Markdown文档中是一个比较难受的事情 一般大家都会将图片存入本地某个路径或者网络存储空间 xff0c 使用URL链接的形式插入图片 image url to image 将图片放到本地的时候如果想将文档分享给朋友或者换台电脑
  • 自定义的串口通信协议

    自定义的通信协议 自定义一主多从串口通讯 1硬件基础两个从机的 Tx 是相互连接的 xff0c 导致一个从机在需要发送数据时发不出去了 协议思路数据包封装和解封装 树莓派python串口的使用注意更改树莓派串口设备驱动关闭控制台功能pyth
  • Linux串口驱动程序(4)-数据发送

    1 tty数据发送调用关系 怎么样才能找到发送数据所使用的函数呢 xff1f 打开uart register driver函数 xff0c 找到里面的tty register driver xff0c 转到定义 xff0c 这里调用了tty
  • TF 错误:InvalidArgumentError (see above for traceback): Reduction axis 0 is empty in shape [ ]

    Tensorflow python framework errors impl InvalidArgumentError Reduction axis 0 is empty in shape 0 100 Node ArgMax 61 Arg
  • Raspbian安装ROS系统Kinectic|树莓派4B安装ros使用OpenCV(全流程)

    前言 树莓派4B最高拥有4Gb的RAM xff0c 对于承担图像处理任务的嵌入式设计是个性价比很高的选择 众所周知 xff0c ROS系统对Ubuntu系统最友好 xff0c 但是由于树莓派4暂时还无法使用Ubuntu MATE xff0c
  • Ubuntu设置屏幕分辨率及屏幕翻转

    首发于 xff1a yuany3721的WordPress Version Ubuntu 18 04 6 LTS 使用xrandr查看屏幕信息 xrandr Screen 0 minimum 320 x 200 current 1920 x
  • 用美图秀秀换证件照背景颜色

    xff08 JDD KK 原创 xff09 问题描述 xff1a 不会PS xff0c 也没有各种会员 xff0c 怎么为了应急去换证件照背景 xff1f xff08 此方法有局限 xff0c 且质量一般 xff0c 只为应急 xff09
  • 让自己写的程序也有api

    当我们在学习的时候 xff0c 有时候看到别人的api会感觉到蛮高大上的 其实他们的api并不是他们在写完程序之后 xff0c 通过键盘录入的 xff0c 而是通过工具来生生成的 因此我们完全有机会打造属于自己的api api的作用 1 便
  • 记录使用gitlab实现Docker自动化部署

    目录 前言 一 gitlab runner docker安装 二 gitlab runner的注册与使用 1 注册 2 gitlab ci yml 脚本编写 总结 前言 前面搭建了gitlab与harbor xff0c 现在就使用它们来实现