先注册好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

  

Gitlab-CI +Docker + Docker-Compose构建可持续集成java项目的镜像的更多相关文章

  1. Docker+Jenkins+Maven+SVN搭建持续集成环境

    Docker+Jenkins+Maven+SVN搭建持续集成环境 环境拓扑图(实验项目使用PHP环境) 发布流程图 环境说明 系统:Centos 7.4 x64 Docker版本:18.09.0 Ma ...

  2. 基于GitLab CI搭建Golang自动构建环境

    基于GitLab CI搭建Golang自动构建环境 Golang发布遇到的问题 对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一 开发者本地环境需要将环境变量文件改 ...

  3. 基于Kubernetes/K8S构建Jenkins持续集成平台(下)

    基于Kubernetes/K8S构建Jenkins持续集成平台(下) Jenkins-Master-Slave架构图回顾: 安装和配置NFS NFS简介 NFS(Network File System ...

  4. 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2

    基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2 Kubernetes实现Master-Slave分布式构建方案 传统Jenkins的Master-Slave方案的缺陷 Mas ...

  5. Jenkins自动化构建系列:01敏捷开发、自动化构建与持续集成

    <SVN与TortoiseSVN实战系列>已写完,今天新开一个<Jenkins自动化构建系列>,上周听了Bob Jiang老师的Agile1001公开课,一直想写个总结,这篇关 ...

  6. 用Jenkins构建Django持续集成环境

    用Jenkins构建Django持续集成环境 - V2EX https://www.v2ex.com/t/32054

  7. 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1

    基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1 Jenkins的Master-Slave分布式构建 什么是Master-Slave分布式构建 Jenkins的Master-S ...

  8. 手把手教你利用Jenkins持续集成iOS项目

    前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...

  9. 使用Jenkins进行持续集成ionic3项目

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.  网上大多数是关于.net web网站以及 ...

随机推荐

  1. LeetCode_371. Sum of Two Integers

    371. Sum of Two Integers Easy Calculate the sum of two integers a and b, but you are not allowed to ...

  2. Swift4.0复习操作符方法与操作符的定制

    1.对已有操作符的重载: 2.可定制的操作符: 3.定制前缀操作符: 4.定制后缀操作符: 5.定制中缀操作符:

  3. vue react 路由history模式刷新404问题解决方案

    vue单页因微信分享和自动登录需要,对于URL中存在’#’的地址,处理起来比较坑.用history模式就不会存在这样的问题.但是换成history模式,就会有个新的问题,就是页面刷新后,页面就无法显示 ...

  4. web端自动化——Python的smtplib发送电子邮件

    SMTP (Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. Python的smtplib模块提 ...

  5. WXS---基础类库

  6. PCA分析的疑问

    R 与python scikit-learn PCA的主成分结果有部分是反的 通过R和python分别计算出来的PCA的结果存在某些主成分的结果是相反的,这些结果是没有问题的,只是表示这个分量被反转了 ...

  7. 安装AWX

    1.安装最新版python 2.安装最新版docker 设置国内docker镜像源 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | ...

  8. html5 canvas 自定义画图裁剪图片

    html5 给我们带来了极大惊喜的canvas标签,有了它我们可以在浏览器客户端处理图片,不需要经过服务器周转.可以实现: 1.照片本地处理,ps有的一些基本功能都有 2.结合js可以实现一些很炫的动 ...

  9. ajax后台跳转无效的原因

    Ajax只是利用脚本访问对应url获取数据而已,不能做除了获取返回数据以外的其它动作了.所以浏览器端是不会发起重定向的. 1)正常的http url请求,只有浏览器和服务器两个参与者.浏览器端发起一个 ...

  10. STM32F103芯片SPI控制NRF24L012.4G无线模块交互通信实验

    1.NRF24L01模块的资料百度搜索一下就有很多.这里我就不做介绍本文主要侧重于应用层面实验介绍与分享. 2.先看下原理图. 根据原理图:写出NRF24L01  C语言驱动文件如下: #includ ...