在以Jenkins为镜像创建Docker容器时,我们在jenkins的dockerfile文件中写明了要安装Docker Compose,目的也是在Jenkins容器中借助Docker Compose来完成相关的操作。

 

一、容器中安装Docker Compose

  1、同时安装Jenkins和Docker Compose:参照之前写过的文章安装Jenkins的同时也安装Docker Compose: https://www.cnblogs.com/CKExp/p/9536864.html

     安装完毕,开始安装jenkins内部的插件,如有安装失败的插件,点击Retry重新安装。如果发现jenkins缺少东西,需要重装,则把/var/jenkins_home文件夹整体删除,重新安装。

  2、只安装Jenkins,再进入容器后安装Docker Compose,进入Jenkins容器中 $ docker exec -it 容器ID /binbash 然后参照官网文档进行安装:https://docs.docker.com/compose/install/#install-compose

二、在Jenkins中新建项目

  首先把系统时间修改一下,使用中国时区,在系统管理,脚本命令行中写入如下代码设置jenkins中的系统时间同步北京时间,方便后期做定时删除无效镜像使用。

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

  1、点击新建项目按钮,输入一个项目名称。

  

  2、配置项目的Git路径,如为私有项目,则增加凭证(Credentials)。

  

  3、构建触发器,定时两分钟检查一次查看Git中是否有代码变更,

  

  4、设置构建时间(建议将时长分配多一点,如果构建复杂应用,构建过程将会耗时很长)。

  

  5、构建过程脚本,在这里使用docker compose完成相应的功能,

  

  构建脚本具体如下,在此过程中指明了两个.yaml文件的具体位置,以项目的根目录为基准进入docker文件夹找到两个.yaml文件,然后docker compose将两个文件合并,停止并删除本地已有的容器、镜像、网桥、数据卷,然后重建:

#!/bin/bash
# 获取短版本号 GITHASH=`git rev-parse --short HEAD`
docker-compose -f ./docker/docker-compose.yml -f ./docker/docker-compose.override.yml -p surround down --rmi local --remove-orphans
docker-compose -f ./docker/docker-compose.yml -f ./docker/docker-compose.override.yml -p surround up -d --build

  或可以使用如下命令,不在本地生成容器,而只生成镜像即可

#!/bin/bash
# 获取短版本号 GITHASH=`git rev-parse --short HEAD`
docker-compose -f ./docker/docker-compose.yml -f ./docker/docker-compose.override.yml -p surround down --rmi local --remove-orphans
docker-compose -f ./docker/docker-compose.yml -f ./docker/docker-compose.override.yml -p multimap build

  6、将镜像推送到镜像仓库中,方便后期的服务部署工作。

echo ---------------Push-Images...------------------
docker login -u=xxx用户名xxx -p=xxx密码xxx ccr.ccs.tencentyun.com
docker-compose -f ./docker/docker-compose.yml -f ./docker/docker-compose.override.yml push

  7、保存,配置结束,点击开始构建。

三、新建过程中可能出现的问题

  在Jenkins中发布项目时,从控制台中查看到错误,并指明了docker compose报错,则进入jenkins容器,测试docker-compose --version ,能够正常显示则安装成功,如果jenkins中的docker compose附属安装失败,则在jenkins容器内重新安装docker, 通过命令进入容器:docker exec -it 容器ID /binbash,然后先删除已有的文件夹,跟随官网文档重新安装:https://docs.docker.com/compose/install/#install-compose 并测试docker-compose --version ,能够正常显示则安装成功,再次测试jenkins发布项目是否能够正常跑通。

  

  本文地址:https://www.cnblogs.com/CKExp/p/9940479.html

  欢迎关注微信订阅号,有新的文章将同步到订阅号中

   

2018-11-11,望技术有成后能回来看见自己的脚步

  

新建项目到Jenkins中的更多相关文章

  1. Python项目在Jenkins中的自动化测试实践(语法检查、单元测试,coverage(代码覆盖率)、自动打包)

    原始链接:http://blog.csdn.net/a464057216/article/details/52934077 requirments OS: Ubuntu 14.04+ Gitlab 8 ...

  2. Jenkins新建项目中源码管理Repository URL使用Git报错:Failed to connect to repository : Command "git ls-remote -h......

    之前部署了Gitlab+Gerrit+Jenkins持续集成环境,但在Jenkins中新建项目的源码管理"Repository URL"中添加git地址环节出现了问题,信息为&qu ...

  3. Jenkins中构建Testcomplete项目的方法介绍

    Jenkins的部署在上一篇随笔中已经和大家介绍了,下面我们介绍一下再Jenkins中构建testcomplete项目.我这里使用的是Testcomplete11,下面详细介绍一下构建步骤. 1.Je ...

  4. Jenkins中maven的作用--构建项目(三)

    本文主要根据Jenkins上的日志来继续说明构建项目的过程,上文我们已经讲到构建一个测试环境或单独终端的过程,详情可以了解上篇文章 一.背景介绍 首先看下SVN代码的仓库的结构: 代码仓库里有一个文件 ...

  5. git+jenkins jar包代码的发布加新建项目

    1.本地仓库  java开发 把代码上传上来 ,问一下他要上传到的主机ip , 分支 2.本地 , 设置-->仓库 更新数据,让他同步到南阳gitlab, 若没有这个项目,需要创建相同名字的项目 ...

  6. Android Studio中新建项目时Your android sdk is out of date or is missing templates的解决办法

    在Android Studio中新建项目时出现了以下问题:Your android sdk is out of date or is missing templates. Please ensure ...

  7. 在eclipse中首次新建项目的时候,出现Project interpreter not specified

    在eclipse中首次新建项目的时候,出现Project interpreter not specified(大致可以理解为:没有执行的项目编译者) 原因就是安装了pydev之后,我们的python还 ...

  8. 2.在Jenkins中配置及执行 maven + selenium + testng项目

    1. 在Jenkins中配置Maven与Git 1)在系统管理>管理插件>可选插件 页面分别下载Git plugin 与 Maven Integration plugin插件,安装完成后再 ...

  9. vs2005新建项目中没有ASP.NET WEB应用程序的解决方法

    在vs2003的年代,我们可以在项目模板中选择创建"asp.net web应用程序",可是到vs2005中,就变成了创建网站,原有的创建"asp.net web应用程序& ...

随机推荐

  1. storage.go

    package storage import (     "fmt"     "os" ) const DEFAULT_STORAGE_ENGINE = &qu ...

  2. go语言 nsq源码解读三 nsqlookupd源码nsqlookupd.go

    从本节开始,将逐步阅读nsq各模块的代码. 读一份代码,我的思路一般是: 1.了解用法,知道了怎么使用,对理解代码有宏观上有很大帮助. 2.了解各大模块的功能特点,同时再想想,如果让自己来实现这些模块 ...

  3. Windows 使用 Visual Studio 编译 caffe

    说明:最近看 caffe 发现在 github 上下载的源码没有windows版本的,需要自己生成项目文件才能用 Visual Studio 编译,这里记录一下生成Windows项目文件的方法以及编译 ...

  4. 【线段树】Bzoj1798 [AHOI2009] 维护序列

    Description 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成. 有长为N的数列,不妨设为a1,a2,…,aN .有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2 ...

  5. PwnAuth——一个可以揭露OAuth滥用的利器

    一.简介 鱼叉式网络钓鱼攻击被视为企业最大的网络威胁之一.只需要一名员工输入自己的凭证或运行一些恶意软件,整个企业都会受到威胁.因此,公司投入大量资源来防止凭证收集和有效载荷驱动的社会工程攻击.然而, ...

  6. Python-常用 Linux 命令的基本使用

    常用 Linux 命令的基本使用 操作系统 作用:管理好硬件设备,让软件可以和硬件发生交互类型 桌面操作系统 Windows macos linux 服务器操作系统 linux Windows ser ...

  7. IOT高性能服务器实现之路

    市场动态 物联网市场在2018年第一季度/第二季度出现了意想不到的加速,并将使用的物联网设备总数提升至7B.这是IoT Analytics最新“ 物联网和短期展望状态 ”更新中的众多发现之一. 全面的 ...

  8. 干货,一文带你超详细了解Session的原理及应用

    session 简介 session 是我们 jsp 九大隐含对象的一个对象. session 称作域对象,他的作用是保存一些信息,而 session 这个域对象是一次会话期间使用同一个对象.所以这个 ...

  9. 『开源』扩展 JS 的 Date 处理函数

    背景: JS 有自己的 时间类型 Date  —— 但是,在某些情况下 这个对象似乎 不太好用. 本文 基于 JQuery 扩展了一些  JS日期函数,包括: > 字符串 转 Date 对象 万 ...

  10. Python调用ansible API系列(三)带有callback的执行adhoc和playbook

    在第二篇文章中虽然可以执行adhoc和playbook但是执行结果的输出并不是特别直观,虽然没有报错但是到底什么结果其实你是不知道的尤其是在执行adhoc的时候,这时候我们要利用callback来设置 ...