当前位置:   article > 正文

Docker(7)----CI的使用(解释最清楚的gitlab-runner安装以及与idea的使用)_ci 访问docker

ci 访问docker

1. CI 持续集成

1. 前言

  1. 项目部署的具体流程:

    1. 将项目通过maven进行编译打包
    2. 将文件上传到指定的服务器中
    3. 将war包放到tomcat的目录中
    4. 通过dockerfile将tomcat和war包转成一个镜像,由dockercompose去运行容器
    5. 如果项目更新了,那就又需要从头来一次,太麻烦了。
  2. 我们为什么要使用ci持续集成呢
    想必知道了上面项目部署的流程后,都有一定的感觉,就是每次我更新项目了,我都需要按上面的步骤走一次,很麻烦。但是上面的流程又是固定的,对,固定的,此时我们马上想到能否自动化帮我们解决呢?

  3. CI持续集成就是为了解决上面的问题产生的,持续集成的意思:项目你只要编写好,提交好了,那么就会自动集成到服务器中,是的,不用你maven打包什么鬼了,全自动的完成。

2. 实现持续集成

1. 前言

  1. 我们在项目开发的时候,需要使用git,因此,我们这里需要先安装gitlab服务器
    对于github gitee gitlab的区别,请看:https://blog.csdn.net/xueyijin/article/details/111915928
  2. gitlab官网文档:https://docs.gitlab.com/omnibus/docker/README.html#install-gitlab-using-docker-compose

2. 安装gitlab服务器

  1. 由于本人计算机内存才8g,开多虚拟机会炸,因此,在同一台机器上安装等下需要的所有东西。

  2. 我们将使用docker-compose去安装gitlab服务器,下面的yml文件就是参考上面的官网文档写得。

    version: '3.7'
    services:
      gitlab:
        image: 'twang2218/gitlab-ce-zh:11.1.1'
        container_name: "gitlab"
        restart: always
        # 赋予特定权限
        privileged: true
        hostname: 'gitlab'
        environment:
          TZ: 'Asia/Shanghai'
          GITLAB_OMNIBUS_CONFIG: |
          	# 设置为自己的ip
            external_url 'http://192.168.182.130'
            gitlab_rails['time_zone'] = 'Asia/Shanghai'
            gitlab_rails['smtp_enable'] = true
            gitlab_rails['gitlab_shell_ssh_port'] = 22
        ports:
          - '80:80'
          - '443:443'
          - '22:22'
        volumes:
          - ./docker_gitlab/config:/etc/gitlab
          - ./docker_gitlab/data:/var/opt/gitlab
          - ./docker_gitlab/logs:/var/log/gitlab
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
  3. 需要修改sshd默认端口,因为从上面的yml文件我们可以看出,他也需要22端口号,当然你也可以修改上面的yml配置文件。

    # 第一种方案,修改上面的yml文件,看清楚到底是改哪里的22
    # 个人还是不建议这样子修改,我就一开始作死过,后面一堆bug
    # 喜欢折腾的,可以这样子操作
     gitlab_rails['gitlab_shell_ssh_port'] = 8081
    	ports:
    	   - '80:80'
    	   - '443:443'
    	   - '8081:22'
    
    # 第二种方案,修改sshd的默认端口号
    vi /etc/ssh/sshd_config
    将Port 22 改成 Port 60322
    # 重新启动一下sshd 
    systemctl restart sshd
    
    # 此时,如果你用了其他软件去连接虚拟机的请注意:
    之后你连接虚拟机,记得把端口号改成 60322,而不是用来的22,否则你一直都找不出原因的
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  4. 运行docker-compose up -d(之后会有一系列的bug,请注意)

    # 启动,并让它拉取gitlab
    root@ubuntu:/home/docker_gitlab# docker-compose up -d
    Pulling gitlab (twang2218/gitlab-ce-zh:11.1.1)...
    11.1.1: Pulling from twang2218/gitlab-ce-zh
    
    # 之后,查看gitlab的启动日志(重点)
    docker-compose logs -f 
    # 因为gitlab启动是真的真的真的很慢,我们需要通过查看日志,保证真的启动成功了
    # 否则,你此时在浏览器输入ip,一直都是无法访问的bug
    # 实际上不是无法访问,是gitlab服务器都没有启动成功呢。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  5. 当你看见日志输出,总是重复输出这两句话的时候,说明gitlab服务器已经准备好了。
    在这里插入图片描述

  6. 打开浏览器直接输入 ip 即可,用户名root,密码password,登录就好了。
    在这里插入图片描述

  7. 默认你们是没有项目的,我的是之前学习创建好了。
    在这里插入图片描述

3. 安装gitlab-runner

  1. 真正帮我们自动持续集成的是gitlab-runner,因此我们还需要安装gitlab-runner,这里面坑很多,你们先尝试跟我们的步骤走,每个人的电脑不一样,bug也可能不一样,如果你有bug,也可以评论,我看看,下面是我的过程:
0. 整个目录结构
  1. runner是什么?就是相当于一个自动化流水线工程,会自动执行符合tag的作业(先理解一下,后面测试的时候,会明白的)。

  2. 先创建一个docker-runner目录,将需要的文件全部放于此地。

  3. 这是最后的目录结构,下面一步步来完成。坚持住,加油。

    root@ubuntu:/home/docker-runner# ls
    apache-maven-3.6.3.tar.gz  config  docker-compose  docker-compose.yml  Dockerfile  jdk-8u271-linux-x64.tar.gz
    
    • 1
    • 2
1. 编写docker-compose.yml文件
version: '3.7'
services:
  gitlab-runner:
    build: 
      context: ./
      dockerfile: Dockerfile
    restart: always
    container_name: gitlab-runner
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/apt/:/etc/apt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
2. 解释yml文件
  1. 在数据映射的时候,映射了两个,docker.sock 跟/etc/apt目录

  2. 本地虚拟机中的docker.sock 是本地docker运行时候的关键东西,你可以理解为一把锁,有这个锁,才能用本地docker运行,为什么要映射这个呢?因为我们在gitlab-runner容器里面也是要使用docker的

  3. 本来gitlab服务器 跟 gitlab-runner应该在两个机子上的,因为我们没有资金换内存大的电脑,都在同一个虚拟机上操作。

  4. 我们需要gitlab-runner容器使用宿主机即本地虚拟机的docker,因此,必须把docker.sock 共享给runner容器中

  5. /etc/apt中有个很重要的sources.list文件,这个文件是存储我们阿里云镜像的内容,请看下面。这样子gitlab-runner容器中相当于我们已经换了阿里云的镜像,此后,再gitlab-runner容器中使用apt-get install 下载东西则不会很慢了。

    root@ubuntu:/home/docker-runner# cat /etc/apt/sources.list
    # deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted
    # deb-src http://security.ubuntu.com/ubuntu xenial-security universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse restricted main universe
    #deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable
    # deb-src [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable
    # deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
3. 编写Dockerfile文件
  1. 下面是Dockerfile的用法,如果你不懂dockerfile的用法,

  2. 请看:https://blog.csdn.net/xueyijin/article/details/111693506

  3. 相应的maven jdk 在评论区有百度网盘链接。

    FROM gitlab/gitlab-runner
    
    WORKDIR /usr/local/bin
    COPY docker-compose docker-compose
    RUN chmod 777 docker-compose
    
    RUN mkdir -p /usr/local/java
    WORKDIR /usr/local/java
    COPY jdk-8u271-linux-x64.tar.gz /usr/local/java
    RUN tar -zxvf jdk-8u271-linux-x64.tar.gz
    RUN rm -rf jdk-8u271-linux-x64.tar.gz
    
    RUN mkdir -p /usr/local/maven
    WORKDIR /usr/local/maven
    COPY apache-maven-3.6.3.tar.gz /usr/local/maven
    RUN tar -zxvf apache-maven-3.6.3.tar.gz
    RUN rm -rf apache-maven-3.6.3.tar.gz
    
    ENV JAVA_HOME /usr/local/java/jdk1.8.0_271
    ENV MAVEN_HOME /usr/local/maven/apache-maven-3.6.3
    ENV PATH $PATH:/usr/local/bin:$JAVA_HOME/bin:$MAVEN_HOME/bin
    
    WORKDIR /
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
4. 解释Dockerfile文件
# 拉取gitlab-runner镜像
FROM gitlab/gitlab-runner
# 确定docker-compsoe工作目录,将docker-compose文件复制到容器中
WORKDIR /usr/local/bin
COPY docker-compose docker-compose
RUN chmod 777 docker-compose
# 确定java的工作目录,将jar8复制到容器中,且解压并删除软件包
RUN mkdir -p /usr/local/java
WORKDIR /usr/local/java
COPY jdk-8u271-linux-x64.tar.gz /usr/local/java
RUN tar -zxvf jdk-8u271-linux-x64.tar.gz
RUN rm -rf jdk-8u271-linux-x64.tar.gz
# 确定maven的工作目录,将maven复制到容器中,且解压并删除软件包
# 需要maven是因为runner之后会帮我们把代码打包成war包,因此需要maven
RUN mkdir -p /usr/local/maven
WORKDIR /usr/local/maven
COPY apache-maven-3.6.3.tar.gz /usr/local/maven
RUN tar -zxvf apache-maven-3.6.3.tar.gz
RUN rm -rf apache-maven-3.6.3.tar.gz

# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_271
ENV MAVEN_HOME /usr/local/maven/apache-maven-3.6.3
ENV PATH $PATH:/usr/local/bin:$JAVA_HOME/bin:$MAVEN_HOME/bin

# 初始化 工作目录在根目录下
WORKDIR /
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
5. 运行docker-compose up -d
6. 其他必要命令执行操作
# 1. 先进入gitlab-runner容器中,并安装docker。
docker exec -it gitlab-runner bash
# 由于我们把/etc/apt/sources.list 文件共享来了
# 间接换了阿里云镜像,因此需要先 更新软件包
root@a9a311428c97:/# apt-get update
# 安装docker
root@a9a311428c97:/# apt-get install docker && apt-get install docker.io

# 2. 将docker.sock的文件设置为root用户组操作
sudo chown root:root /var/run/docker.sock

# 3. 将gitlab-runner容器运行时候的用户组改成 root用户组
# 这样子runner容器就可以肆无忌惮的使用宿主机的docker了
docker exec -it gitlab-runner usermod -aG root gitlab-runner
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
7. 解释为什么不在dockerfile的时候安装好docker呢
  1. 的确,我们在编写dockerfile的时候,可以在里面编写 RUN apt-get update && apt-get install docker,这样子理论上是没有错误的,但是实操过程中,会出现无法构建成功镜像,原因是,这行命令无法被正确执行,因为是网络的问题,无法定位到对应的网址,导致没办法成功。
  2. 找过网上其他的解决方案,目前尚未成功,哈哈哈哈。
8. 在gitlab上创建项目,准备测试。
  1. 创建项目
    在这里插入图片描述

  2. 点击ci/cd设置
    在这里插入图片描述

  3. 点击runner设置(注册和查看你的项目)
    在这里插入图片描述

  4. 发现里面是空的,因为我们还没有将runner注册到gitlab,因此下一步就是将runner注册到gitlab。
    下面这图片很重要,有url跟令牌
    在这里插入图片描述

9. 将runner注册到gitlab中
# runner注册命令
root@ubuntu:/home/docker_gitlab# docker exec -it gitlab-runner gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=326 revision=943fc252 version=13.7.0
Running in system-mode.                            
# 输入URL,就是上面说很重要的图片中的URL                                             
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.182.129/
# 输入令牌,也是上面图片中的token
Enter the registration token:
1X-N_Zfr_ePxGoPG3Lzw
# 就是描述一下这个runner
Enter a description for the runner:
[a9a311428c97]: first ci
# 这个就是tag,标志,后面会详细说明
# deploy 只是一个标志
Enter tags for the runner (comma-separated):
deploy
# 注册成功
Registering runner... succeeded                     runner=1X-N_Zfr
# 选择runner执行器,这里我们选择用shell,命令行方式
Enter an executor: custom, docker, docker-ssh, parallels, shell, kubernetes, ssh, virtualbox, docker+machine, docker-ssh+machine:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  1. 正常注册后,刷新一下gitlab上,就会看见下面的样子,则表示runner注册成功了。
    在这里插入图片描述
10. runner注册过程中出现的bug
1. 有个是CA证书那个错误
  1. 建议重新换个虚拟机,本人看官方文档,网上的csdn,所有方法都用过,结果还是错的,搞了两天两夜,准备放弃的时候,换个虚拟机就成功了。如果你时间多,也可以去试一下网上的解法。
  2. 还有这个错误,同理,换个虚拟机吧,反正都是CA认证错了。
    runner=zWM6Zoos status=couldn’t execute POST against https://192.168.182.130/api/v4/runners: Post https://192.168.182.130/api/v4/runners: x509: cannot validate certificate for 192.168.182.130 because it doesn’t contain any IP SANs
2. New runner. Has not connected yet错误
  1. 就是出现了 注册runner的信息了,但是前面不是绿色圆圈,而是灰色三角形。
    请看:https://blog.csdn.net/xueyijin/article/details/111932071
11. 设置此 Runner 可以运行没有任何标签的作业

在这里插入图片描述
在这里插入图片描述

3. 使用idea测试gitlab以及gitlab-runner

  1. 能到这一步,说明你的gitlab 以及gitlab-runner安装成功了,不容易。
  2. 接下来就是,测试runner了。

1. 测试

  1. 创建一个JavaWeb—maven工程,并确保可以运行成功
    在这里插入图片描述
    在这里插入图片描述

  2. 并使用git,将代码推送到gitlab中
    对idea操作git 不熟悉的,可以看这篇:https://blog.csdn.net/xueyijin/article/details/111462555
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 目前已经保证了gitlab跟idea是没有任何问题的,接下来就是要测试runner了

  2. 使用runner,我们需要额外一种配置文件来管理,那就是 .gitlab-ci.yml 文件

  3. 在项目的根目录下,创建一个.gitlab-ci.yml文件,并编写如下内容:

    stages:
      - test
        
    test:
      stage: test
      tags: 
        - deploy
      script:
        - echo first test ci
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    	# 解释
    	# runner是什么?就是相当于一个自动化流水线工程,会自动执行符合tag的作业
    	# 这相当于service
    	stages:
    		# 随便起一个名字
    	  - test
    	    
    	test:
    	  # 确保这个跟上面的名字都相同
    	  stage: test
    	  # 标志,还记得我们在注册runner的时候写的tags吗?
    	  # 如果我下面写的是run,那么runner将无视,无法操作此作业,因为不符合tag
    	  # 如果是deploy,就跟注册的runner写的tags一致,则表示runner可以接受这个作业
    	  # 但是我们在注册完runner的时候,设置了此runner可以运行不带标签的的作业,因此不写也可以
    	  tags: 
    	    - deploy
    	  # runner之后会执行的作业脚本
    	  # 因为我们在注册runner的时候,
    	  # 选择runner执行器,选择用shell,命令行方式
    	  script:
    	    - echo first test ci
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  4. 提交到gitlab中。

    在这里插入图片描述

  5. 在gitlab中,我们看见已经提交过来的.gitlab-ci.yml文件
    在这里插入图片描述
    8.

  6. 我们将看见下面,已经通过的流水线测试,我们再点击 已通过 进去查看一下。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  7. 出现上面的结果,说明了runner也成功了。

2. 总结

  1. 最重要的是理解,什么是runner,它就是执行器,我们在.gitlab-ci.yml中写什么脚本,那么它就会执行什么脚本,当然前提是tags要一致。
  2. 那么,如果我们设置脚本为,打包项目,部署项目的话,那就是每次提交项目到gitlab,那么它就会自动打包部署了呢。

3. CI持续集成实现

  1. 刚刚我们已经可以成功执行.gitlab-ci.yml中的echo first test ci 的脚本了,这个脚本是在gitlab-runner的容器中执行的,那么我们先进入gitlab-runner容器中查看具体情况。

    # 查看gitlab-runner容器中的home目录
    root@a9a311428c97:/# cd /home
    # 里面有个gitlab-runner 目录,继续往下追
    root@a9a311428c97:/home# ls
    gitlab-runner
    root@a9a311428c97:/home# cd gitlab-runner/
    root@a9a311428c97:/home/gitlab-runner# ls
    builds
    root@a9a311428c97:/home/gitlab-runner# cd builds/
    # af381749其实就是我们在gitlab上看见runner的前面一堆数字是一样的
    # 不信的同学,可以往上 看我的截图
    root@a9a311428c97:/home/gitlab-runner/builds# ls
    af381749
    root@a9a311428c97:/home/gitlab-runner/builds# cd af381749/
    root@a9a311428c97:/home/gitlab-runner/builds/af381749# ls
    0
    root@a9a311428c97:/home/gitlab-runner/builds/af381749# cd 0
    root@a9a311428c97:/home/gitlab-runner/builds/af381749/0# ls
    root
    root@a9a311428c97:/home/gitlab-runner/builds/af381749/0# cd root/
    root@a9a311428c97:/home/gitlab-runner/builds/af381749/0/root# ls
    CI  CI.tmp
    root@a9a311428c97:/home/gitlab-runner/builds/af381749/0/root# cd CI
    # 最终我们就找到这里了
    # 如果我们想要maven打包,而我们在创建gitlab-runner容器的时候,已经给他安装了maven,jdk了
    # 因此,我们执行脚本的时候,就可以使用maven打包了
    root@a9a311428c97:/home/gitlab-runner/builds/af381749/0/root/CI# ls
    pom.xml  src
    root@a9a311428c97:/home/gitlab-runner/builds/af381749/0/root/CI# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

1. 实现

  1. 先查看项目结构
    在这里插入图片描述

  2. 编写Dockerfile文件,docker-compose.yml文件,.gitlab-ci.yml文件

    # Dockerfile文件是干什么的?是用来构建自定义的镜像
    # 编写Dockerfiel文件
    # 因为我们是web项目,肯定是需要tomcat服务器,因此需要构建镜像
    # 并把项目copy到tomcat的webapps中
    FROM daocloud.io/library/tomcat:9.0.36-jdk8
    COPY CI.war /usr/local/tomcat/webapps
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    # docker-compose.yml是干什么的?是用来启动并且管理容器的方法。
    version: '3.7'
    services:
      ci:
        build:
          # 因为我的dockerfile文件放在了docker目录下
          context: docker
          dockerfile: Dockerfile
        restart: always
        # 这里要用小写,因为容器的名字不能大小
        container_name: ci
        ports:
        - 8080:8080
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    # .gitlab-ci.yml文件是让runner自动执行某些脚本命令。
    # 编写.gitlab-ci.yml文件
    stages:
      - test
    
    test:
      stage: test
      tags:
        - deploy
      script:
        - echo first test ci
    	# 使用mvn 将项目打包,打包之后会生成target文件
        - /usr/local/maven/apache-maven-3.6.3/bin/mvn package
        # 将里面的CI.war 复制到docker目录下,方便Dockerfile将工程复制到tomcat镜像的webapps中
        - cp target/CI.war docker/CI.war
    	# 需要先清除上一次的容器,重新创建一个。
        - docker-compose down
        # 需要重新构建镜像,而不是用原来那个
        - docker-compose up -d --build
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  3. 直接git到gitlab中。打开流水线ci/cd看见有个正在运行中的作业,点进去看到,它正在打包项目,下载有关的jar包。
    在这里插入图片描述

    在这里插入图片描述

3.我们首先使用docker ps查看。

```powershell
# 发现已经启动了
root@ubuntu:/home/ssm# docker ps
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                 PORTS                                                          NAMES
6b629d71569e        ci_ci                           "catalina.sh run"        2 minutes ago       Up 2 minutes           0.0.0.0:8080->8080/tcp                                         ci
a9a311428c97        docker-runner_gitlab-runner     "/usr/bin/dumb-init …"   4 hours ago         Up 4 hours                                                                            gitlab-runner
f880982fe3aa        twang2218/gitlab-ce-zh:11.1.1   "/assets/wrapper"        4 hours ago         Up 4 hours (healthy)   0.0.0.0:22->22/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   gitlab
```
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 直接的浏览器中输入ip:8080,可以正确得到结果.
    在这里插入图片描述

  2. 此时,我在idea上修改index页面,然后再次提交到gitlab上,就做这两个操作,其他什么都不做。

    在这里插入图片描述

  3. 直接点击刷新,页面自动更新。

在这里插入图片描述

  1. 此时仍然还有个问题,我们可以在虚拟机中敲下 docker images,发现出现了很多none的镜像,这些镜像是之前docker-compose down之后遗留下来的问题,如果不删除,则会占用大量内存空间,因此我们需要修改.gitlab-ci.yml的脚本文件。
root@ubuntu:/home/ssm# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
ci_ci                         latest              bb3aecafc54c        31 seconds ago      530MB
<none>                        <none>              0aa721cb7320        5 minutes ago       530MB
<none>                        <none>              f8d996f75a58        16 minutes ago      530MB
docker-runner_gitlab-runner   latest              7467f765da3c        4 hours ago         1.06GB
gitlab/gitlab-runner          latest              5709b0c004e5        7 days ago          511MB
daocloud.io/library/tomcat    9.0.36-jdk8         b79665757bae        6 months ago        530MB
twang2218/gitlab-ce-zh        11.1.1              e1282cde70e8        2 years ago         1.61GB

# 使用docker images -qf dangling=true 可以列出为none的id
# 先不加参数 -q
root@ubuntu:/home/ssm# docker images -f dangling=true 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              0aa721cb7320        8 minutes ago       530MB
<none>              <none>              f8d996f75a58        20 minutes ago      530MB
# 参数 -q为 只列出id
root@ubuntu:/home/ssm# docker images -qf dangling=true 
0aa721cb7320
f8d996f75a58

# 修改.gitlab-ci.yml文件
stages:
  - test

test:
  stage: test
  tags:
    - deploy
  script:
    - echo first test ci
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn package
    - cp target/CI.war docker/CI.war
    - docker-compose down
    - docker-compose up -d --build
    - docker rmi $(docker images -qf dangling=true)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/542422
推荐阅读
相关标签
  

闽ICP备14008679号