先注册好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. Swift4.0复习错误处理

    1.Swift中错误的表示: “在Swift中如果我们要定义一个表示错误的类型非常简单,只需遵循 Error 协议即可.我们通常用枚举或结构体类型来表示错误类型,当然枚举可能用得更多些,因为它能更直观 ...

  2. LODOP插件的IE浏览器的安全设置

    LodopFuncs.js里的判断默认是混合部署,IE等支持np插件的浏览器会走lodop插件方式,但是IE的安全设置可能会阻挡lodop插件,可点击允许或修改IE浏览器的安全设置让Lodop每次都能 ...

  3. Adaptive Compressive Tracking via Online Vector Boosting Feature Selection(ACT算法解读)

  4. urls 视图层

    urls.py 路由层 路由与视图函数对应关系 >>> 路由层 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射 ...

  5. Redis 缓存问题及解决方案

    [相关概念] 缓存击穿:指的是一些热点数据过期,由于热点数据存在并发量大的特性,所以短时间内对数据库的造成很大的冲击,导致系统瘫痪.常见于例如微博系统中明星结婚或出轨时微博瘫痪的情况. 缓存雪崩:指的 ...

  6. C#中的System.Web.HttpUtility.UrlEncode转码问题

    最近需要与JAVA程序对接口,其中遇到的URL转码问题: Java中URL编码所用的 URLEncoder.encode 产生的字符是大写且英文'(',')'是分别转成'%28'和 '%29' 而C# ...

  7. Python3之字符串格式化format函数详解(下)

    格式限定符 format通过丰富的的“格式限定符”(语法是 {}中带:号)对需要格式的内容完成更加详细的制定. 进制转换 我们可以再限定符中制定不同的字符对数字进行进制转换的格式化,进制对应的表格: ...

  8. CodeForces-166B-Polygons

    B. Polygons time limit per test:2 seconds memory limit per test:256 megabytes input:standard input o ...

  9. python学习-58 configparse模块

    configparse模块 1.生成文件 import configparser # 配置解析模块 config = configparser.ConfigParser() # config = { ...

  10. Spring Cloud 基于Consul 实现配置服务

    Spring Cloud体系中提供了Config组件来进行配置服务管理.而Consul除了提供服务注册与发现功能外,同时也提供配置管理功能.本位将介绍如何结合Spring Cloud + Consul ...