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
Gitlab-CI +Docker + Docker-Compose构建可持续集成java项目的镜像的更多相关文章
- Docker+Jenkins+Maven+SVN搭建持续集成环境
Docker+Jenkins+Maven+SVN搭建持续集成环境 环境拓扑图(实验项目使用PHP环境) 发布流程图 环境说明 系统:Centos 7.4 x64 Docker版本:18.09.0 Ma ...
- 基于GitLab CI搭建Golang自动构建环境
基于GitLab CI搭建Golang自动构建环境 Golang发布遇到的问题 对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一 开发者本地环境需要将环境变量文件改 ...
- 基于Kubernetes/K8S构建Jenkins持续集成平台(下)
基于Kubernetes/K8S构建Jenkins持续集成平台(下) Jenkins-Master-Slave架构图回顾: 安装和配置NFS NFS简介 NFS(Network File System ...
- 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2
基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2 Kubernetes实现Master-Slave分布式构建方案 传统Jenkins的Master-Slave方案的缺陷 Mas ...
- Jenkins自动化构建系列:01敏捷开发、自动化构建与持续集成
<SVN与TortoiseSVN实战系列>已写完,今天新开一个<Jenkins自动化构建系列>,上周听了Bob Jiang老师的Agile1001公开课,一直想写个总结,这篇关 ...
- 用Jenkins构建Django持续集成环境
用Jenkins构建Django持续集成环境 - V2EX https://www.v2ex.com/t/32054
- 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1
基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1 Jenkins的Master-Slave分布式构建 什么是Master-Slave分布式构建 Jenkins的Master-S ...
- 手把手教你利用Jenkins持续集成iOS项目
前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...
- 使用Jenkins进行持续集成ionic3项目
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 网上大多数是关于.net web网站以及 ...
随机推荐
- 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 ...
- Swift4.0复习操作符方法与操作符的定制
1.对已有操作符的重载: 2.可定制的操作符: 3.定制前缀操作符: 4.定制后缀操作符: 5.定制中缀操作符:
- vue react 路由history模式刷新404问题解决方案
vue单页因微信分享和自动登录需要,对于URL中存在’#’的地址,处理起来比较坑.用history模式就不会存在这样的问题.但是换成history模式,就会有个新的问题,就是页面刷新后,页面就无法显示 ...
- web端自动化——Python的smtplib发送电子邮件
SMTP (Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. Python的smtplib模块提 ...
- WXS---基础类库
- PCA分析的疑问
R 与python scikit-learn PCA的主成分结果有部分是反的 通过R和python分别计算出来的PCA的结果存在某些主成分的结果是相反的,这些结果是没有问题的,只是表示这个分量被反转了 ...
- 安装AWX
1.安装最新版python 2.安装最新版docker 设置国内docker镜像源 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | ...
- html5 canvas 自定义画图裁剪图片
html5 给我们带来了极大惊喜的canvas标签,有了它我们可以在浏览器客户端处理图片,不需要经过服务器周转.可以实现: 1.照片本地处理,ps有的一些基本功能都有 2.结合js可以实现一些很炫的动 ...
- ajax后台跳转无效的原因
Ajax只是利用脚本访问对应url获取数据而已,不能做除了获取返回数据以外的其它动作了.所以浏览器端是不会发起重定向的. 1)正常的http url请求,只有浏览器和服务器两个参与者.浏览器端发起一个 ...
- STM32F103芯片SPI控制NRF24L012.4G无线模块交互通信实验
1.NRF24L01模块的资料百度搜索一下就有很多.这里我就不做介绍本文主要侧重于应用层面实验介绍与分享. 2.先看下原理图. 根据原理图:写出NRF24L01 C语言驱动文件如下: #includ ...