zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    C# EPPlus 导出Excel
    NetCore +EF+Mysql 从数据库生成实体类到项目
    VBA链接SQL server数据库
    sqlserver中的 binary varbinary image
    sql server DateTime与DateTime2的区别
    Sql Server增删改查字段的语法
    c#中queue的用法
    Sql Server中不相关的两个数据表的全部显示
    IActionResult的返回值类型
    linux内存映射
  • 原文地址:https://www.cnblogs.com/zsifan/p/11719697.html
Copyright © 2011-2022 走看看