记录一下我使用jenkins来跑docker container的艰辛路程吧,是照着jenkins官网的[文档](https://jenkins.io/doc/tutorials/build-a-java-app-with-maven/)做的,同时参考了multibranch情况下应该如何写jenkinsFile,也查了很多博客,想做成的效果是jenkins可以自动拉取github上的项目,根据分支名不同使用不同的端口来运行程序。

agent {
    docker {
        image 'maven:3-alpine'
        args '-v /root/.m2:/root/.m2'
    }
}

 

 先说下jenkinsFile中的这条命令,args '-v /root/.m2:/root/.m2',它将主机中的root/.m2目录映射到了docker中的container中,这里指的就是maven:3-alpine,因为maven:3-alpine这个container在运行完之后,就会被remove掉,如果映射了仓库目录的话,就没必要每次run job的时候重新下载jar包了,官网也是这样介绍的,这个地方前面应该替换成自己本地的maven仓库目录。jenkins官网说要安装jenkins,要先安装docker,后来我发现即使没装docker,也可以安装jenkins,在8080端口启动服务的,至于docker的相关知识,docker官网的教程可以说是非常详细了。我最后是通过java -jar xxx.jar来运行java程序的,就这样job一直运行着,job显示是红色的图标,端口一直监听着提供服务,虽然功能是实现了,但不是很合适。
 

 说下我遇到的一个大坑,就是关于权限的问题,默认jenkins服务是以jenkins用户运行着的,我想去文件目录里验证下到底有没有jenkins用户,没找到,还以为没有呢,后来才知道有些linux的用户名就是没有在文件中记录的,我是通过在跑jenkins任务的时候,在shell中输出了当前用户查看的,后来我通过更改jenkins的配置文件,使得运行jenkins服务的用户为root,但还是报权限错误,场景是,我在我的spring boot 项目中添加了一个shell文件,jenkins在跑job的时候拉取我github上的项目到本地jenkins的家目录workspace里面,拉取了很多次,我到那个目录去查看那个shell文件的可执行权限,没有可执行权限啊,让我很是崩溃,直接去改源文件的权限,文件模式发生了变化,但git好像无法提交,后来我采取的方法是,删除掉原来的shell文件,重新建一个shell文件,建好之后,就更改它的权限,然后提交,权限问题就解决了。

使用jenkins来跑docker image的惨痛经历的更多相关文章

  1. Jenkins + docker ,容器中跑docker服务

    1. 宿主机:安装docker 2. 启动jenkins服务 https://jenkins.io/download/ Jenkins官网找自己需要的镜像版本号进行使用. docker run -it ...

  2. 使用Jenkins来构建Docker容器

    使用Jenkins来构建Docker容器(Ubuntu 14.04) 当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了.听起来貌似很简单,dua ...

  3. Jenkins中执行docker命令报错

    Cannot connect to the Docker daemon. Is the docker daemon running on this host?   在配置Jenkins从Gitlab自 ...

  4. MacOS~jenkins里解决docker执行权限问题

    一 全局配置项设置 需要添加全局变量项,例如名称docker,路径/usr/local 添加一个jenkinsfile文件,用于运行docker命令 pipeline { agent any tool ...

  5. ubuntu 中安装jenkins,基于docker运行jenkins

     本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中,至于docker如何安装,本文不再描述,大家可以上网查询下,如何安装docker,下面先放上一个使用jenkin ...

  6. jenkins安装启动(docker)

    mkdir /opt/jenkins -pvim /opt/jenkins/Dockerfile FROM jenkins/jenkins:lts EXPOSE 8080 50000 vim /opt ...

  7. 从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04)

    当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了.听起来貌似很简单,duang~duang~duang,我用了是这样,你们用了也是这样,看起来这 ...

  8. jenkins+git实现docker持续部署

    jenkins所做的事情很简单,就拿我现在的情况来说吧,(1).每次开发完成,我都会push到我的远程仓库:(2).我再将我push到远程仓库的代码pull到我的测试服务器上:(3).在测试服务器上, ...

  9. Jfrog Artifactory jenkins 流水线使用docker的方式培训[暂未成功]

    1. 创建jenkins的流水线 2. 创建artifactory的镜像仓库 3. 创建generic的仓库上传需要的 war包还有tar包. 4. 修改pipeline的 脚本 主要修改的地方. 修 ...

随机推荐

  1. Linux基础命令-echo

    echo命令 功能:显示字符 (末尾自带换行功能) 语法:echo [-neE][字符串] 说明:echo会将输入的字符串送往标准输出.输出的字符串间以空白字符隔开, 并在最后加上换行号 -n 不在字 ...

  2. es6字符串的扩展学习笔记

    1. 传统上,JavaScript只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中.ES6又提供了三种新方法. includes():返回布尔值,表示是否找到了参数字符串. st ...

  3. Oracle RMAN 学习:恢复

    Oracle RMAN 学习:恢复 6 rman恢复 Rman中的恢复对应restore,recover Restore,数据修复,利用备份集的数据文件来替换已损坏的数据文件或将其恢复到另外一个位置, ...

  4. ASP.NET 页面生命中的关键事件的执行顺序

    表 1:ASP.NET 页面生命中的关键事件 阶段 页面事件 可覆盖的方法 页面初始化 Init   加载视图状态   LoadViewState 处理回发数据   任意实现 IPostBackDat ...

  5. tar命令解压jdk.tar.gz包 报错 gzip: stdin: not in gzip format

    转自:https://blog.csdn.net/LL_zhuo/article/details/44173355 遇到和这篇博文一样的问题了.用wget 从oracle官网下载jdk, http:/ ...

  6. scrapy xpath 节点关系

    父节点 子节点 兄弟节点 先辈节点 后代节点

  7. matlab学习笔记(4)

    第9章 数学建模函数 曲线拟合: 多项式拟合: polyfit()函数:采用最小二乘法进行多项式拟合. polyfit(x,y,n);   %对于数据集[x,y],找到次数为n的多项式. [p E] ...

  8. IO流对文件的读取操作

    /*1. 在当前项目的根目录下有一个名为“info.txt”的文件,里面存放的内容如下(可手动创建录入,不需要使用IO流): 2. 利用IO流的知识读取info.txt文件的内容, 在控制台上打印大写 ...

  9. 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-004希尔排序法(Shell Sort)

    一.介绍 1.希尔排序的思路:希尔排序是插入排序的改进.当输入的数据,顺序是很乱时,插入排序会产生大量的交换元素的操作,比如array[n]的最小的元素在最后,则要经过n-1次交换才能排到第一位,因为 ...

  10. Java-马士兵设计模式学习笔记-工厂模式-简单工厂

    一.概述 1.目标:要控制任意类型交通工具的生产模式 2.目标有两层意思(1)任意类型 (2)生产模式,所以对应的,要这两个层面上抽象(Movable,VehicleFactory),利用接口,实现多 ...