Docker-CI

Docker-CI(持续集成)

使用CI的原因

1、每天会频繁的将代码合并的主分支上:快速定位错误代码位置,防止偏离主干。
2、每天频繁的从gitlab上拉取最新版本的代码,并且将其部署到Linux操作系统中,测试新功能和老功能是否可以兼容。

  • 修改Windows的环境,改成Linux下的环境。
  • 将项目打成一个war包。
  • 将其复制到tomcat的webapps目录下,运行。
    3、Gitlab-Runner可以帮助我们将上述频繁操作,但是重复的流程封装起来。
    4、每当我推送代码到Git远程仓库时,他会自动将最新版本的代码部署到指定的Linux服务上。
    5、已经准备好Gitlab仓库。
安装GitLab-Runner
  • 复制daemon.json/etc/docker/,并执行systemctl daemon-reloadsystemctl restart docker
  • 创建工作目录 /opt/docker_gitlab-runner
  • 将提供好的docker-compose.yml文件以及environment目录全部复制到上述目录中
  • 在宿主机启动docker程序后先执行 sudo chown root:root /var/run/docker.sock (如果重启过 docker,重新执行)
  • /opt/docker_gitlab-runner 目录中执行docker-compose up -d --build 启动容器
  • 添加容器权限,保证容器可以使用宿主机的dockerdocker exec -it gitlab-runner usermod -aG root gitlab-runner
  • 注册Runner信息到gitlab
  • docker exec -it gitlab-runner gitlab-runner register
输入 GitLab 地址

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.199.109/

输入 GitLab Token

Please enter the gitlab-ci token for this runner:
1Lxq_f1NRfCfeNbE5WRh

输入 Runner 的说明

Please enter the gitlab-ci description for this runner:
可以为空

设置 Tag,可以用于指定在构建规定的 tag 时触发 ci

Please enter the gitlab-ci tags for this runner (comma separated):
deploy

这里选择 true ,可以用于代码上传后直接执行(根据版本,也会没有次选项)

Whether to run untagged builds [true/false]:
true

这里选择 false,可以直接回车,默认为 false(根据版本,也会没有次选项)

Whether to lock Runner to current project [true/false]:
false

选择 runner 执行器,这里我们选择的是 shell

Please enter the executor: virtualbox, docker+machine, parallels, shell, ssh, docker-ssh+machine, kubernetes, docker, docker-ssh:
shell

测试CI

1、创建maven项目,war项目。
2、创建一个HTML页面。

编写.gitlab-ci.yml(和src同级目录)
stages:
  - test

test:
  stage: test
  script:
    - echo first test ci   # 输入的命令
将maven工程推送到gitlab中
使用CI部署工程
  • 脚本文件是在项目路径下执行的。
  • 使用maven将项目打成war包,使用mvn命令的绝对路径。
  • 在项目目录下创建docker-compose.yml文件,Dockerfile文件。
  • 使用copy目录将target目录下的war复制到了>Dockerfile同级目录下。
  • 停止并删除容器。
  • 启动并重新构建镜像和容器。
  • 脚本文件是在项目路径下执行的。
  • 使用maven将项目打成war包,使用mvn命令的绝对路径。
  • 在项目目录下创建docker-compose.yml文件,Dockerfile文件。
  • 使用copy目录将target目录下的war复制到了Dockerfile同级目录下。
  • 停止并删除容器。
  • 启动并重新构建镜像和容器。

更新.gitlab-ci.yml

stages:
 - test
test:
stage: test
script:
   - echo this is my first ci
   - pwd
   - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package -DskipTests   # 打包
   - cp target/test-ci-1.0-SNAPSHOT.war ./test-ci-1.0-SNAPSHOT.war        # 复制war包到Dockerfile路径
   - docker-compose down			# 先关闭并且删除容器
   - docker-compose up -d --build   # 启动并制作自定义镜像和容器
   - docker image prune -f        # 删除名称为<none>的自定义镜像
创建Dockerfile
# Dockerfile
FROM daocloud.io/library/tomcat:8.5.15-jre8
COPY testci.war /usr/local/tomcat/webapps
创建docker-compose.yml
version: "3.1"
services:
  testci:
    build: docker
    restart: always
    container_name: testci
    ports:
      - 8080:8080
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值