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

目录

前言

一、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

 


总结

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值