• Gitlab-CI +Docker + Docker-Compose构建可持续集成java项目的镜像


    先注册好Runner: https://www.cnblogs.com/zsifan/p/11714788.html

    以及搭建Java和Maven环境: https://www.cnblogs.com/zsifan/p/11716177.html

    安装Docker和Docker-Compose:

    Docker安装:https://docs.docker.com/install/linux/docker-ce/ubuntu/

    Docker-Compose安装: https://docs.docker.com/compose/install/ 

    sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    

    因为国内下载github的速度很慢 所以没使用这种方法,使用的是软件包安装 apt-get install docker-compose

    在linux主机上git项目中创建目录docker

    目录结构是

    DockerFile: 

    FROM java:8
    MAINTAINER 1448983340@qq.com
    ADD weixin-0.0.1-SNAPSHOT.jar weixin-0.0.1-SNAPSHOT.jar
    EXPOSE 9000
    CMD java -jar weixin-0.0.1-SNAPSHOT.jar
    

    docker-compose.yml:

    version : "3.1"
    services:
       weixin:
         image: weixin:latest
         ports:
            - "9000:9000"
         container_name: weixin 

    随后在git项目根目中编写 .gitlab-ci.yml

    stages:
      - pull
      - package
      - build
      - restart
    pull:
      stage: pull
      script:
        - cd /usr/local/xiangmu/weixin
        - git pull git@git.lug.ustc.edu.cn:complete/weixin.git
    package:
      stage: package
      script:
        - cd /usr/local/xiangmu/weixin
        - /usr/local/bin/apache-maven-3.6.2/bin/mvn clean package
        - cp target/weixin-0.0.1-SNAPSHOT.jar docker/weixin-0.0.1-SNAPSHOT.jar 
    build:
      stage: build
      script:
        - cd /usr/local/xiangmu/weixin/docker
        - docker build -t weixin -f DockerFile .
    restart:
      stage: restart
      script:
        - cd /usr/local/xiangmu/weixin/docker
        - docker-compose down
        - docker-compose up -d 
    

      

    随后push代码到gitlab中 将会触发CI/CD 

    一定要注意cd到你项目的目录中

    不加cd 列如最后一步:

    restart:
      stage: restart
      script:
        - docker-compose down
        - docker-compose up -d

    不然会出现找不到该文件

     这是因为runner的初始地方是在

    完成之后jar包就被打包成镜像,以及启动了容器

    因为打包成镜像会造成前面的镜像名字成为<none>并占空间<但没什么用>

    使用docker images|grep none|awk '{print $3 }'|xargs docker rmi 命令将<none>镜像全部删除

     

     将该过程新建一个管道来运行就可以了(最后一步)

    clean:
      stage: clean
      script:
        - docker images|grep none|awk '{print $3 }'|xargs docker rmi
    

      

  • 相关阅读:
    26个精选的JavaScript面试问题
    用js实现随机选取10–100之间的10个数字,存入一个数组,并排序
    小程序布局中class='container'的bug
    PHP接收数据数据包的几个方式
    LINUX命令
    VMware的下载安装
    php中Sessions
    php中Cookies
    php文件上传
    php文件处理
  • 原文地址:https://www.cnblogs.com/zsifan/p/11719697.html
Copyright © 2020-2023  润新知