先注册好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. Django中authenticate和login模块

    Django 提供内置的视图(view)函数用于处理登录和退出,Django提供两个函数来执行django.contrib.auth中的动作 : authenticate()和login(). 认证给 ...

  2. LeetCode_326. Power of Three

    326. Power of Three Easy Given an integer, write a function to determine if it is a power of three. ...

  3. RF之条件判断、初始化清除-4

    条件判断:        rf中用run keyword if 关键字做条件判断,以此来达到类似在python中if ...else...条件判断的功能. 注意:ELSE IF一定都是大写的,不然运行 ...

  4. golang 学习 (八)协程

    一: 进程.线程 和 协程 之间概念的区别:        对于 进程.线程,都是有内核进行调度,有 CPU 时间片的概念,进行 抢占式调度(有多种调度算法)    (补充: 抢占式调度与非抢占(轮询 ...

  5. 【GStreamer开发】GStreamer播放教程07——自定义playbin2的sink

    目标 通过手动选择音频和视频的sink,playbin2可以进一步定制.这允许使用playbin2的应用在解码后可以自行做最终的渲染和显示.本教程展示了: 如何替换playbin2选择的sink 如何 ...

  6. Git常用命令及方法

    https://blog.csdn.net/web_csdn_share/article/details/79243308 Git常用命令及方法大全 下面是我整理的常用 Git 命令清单.几个专用名词 ...

  7. Error:(18, 51) java: -source 1.5 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符)

    问题:主要是因为jdk版本不一样 解决: 方法一:List<String> list=new ArrayList<Stirng>(); 方法二:重新安装jdk8的版本(安装和配 ...

  8. idea更换项目取消直接在当前窗口打开,设置为询问

  9. ZooKeeper 相关问题

    [为什么部署个数是奇数个?] zookeeper有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的.即 2n 个机器的集群,最多可以容忍 n-1 个机器不可用,这个容忍度与 ...

  10. TypeScript TSLint(TypeScript代码检查工具)

    TSLint是TypeScript代码的样式风格检查工具.类似于JavaScript的ESLint,或者Ruby的Rubocop. 配置TSLint TSLint是一个外部工具,我们需要进行一次安装工 ...