1.编辑Dockerfile文件

FROM jenkins

USER root

ADD sources.list /etc/apt/sources.list

RUN apt-get update && apt-get install -y rsync

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ADD rsync.password /etc/rsync.password

RUN chmod 600 /etc/rsync.password && chown jenkins:jenkins /etc/rsync.password

ADD timezone /etc/timezone

USER jenkins

  

注:sources.list 为国内的debian源。

rsync.password 为rsync远程同步的密码文件。

timezone 为时区文件否则,jenkins会差8个小时。内容Asia/Shanghai。

2.构建镜像

docker build -t jenkins:jenkins-chao .

3.构建Docker容器

docker run --name myjenkins -uroot -p 8081:8080 -p 50000:50000 -v /srv/jenkins_home:/var/jenkins_home -d jenkins:jenkins-chao

 注:-u 表示使用root权限。

4.需要同步到远程服务器上开启rsync deamo

vi /etc/rsyncd.conf

#Rsync server
uid = rsync
gid = rsync
use chroot = no
maxconnections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/run/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 10.211.55.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = www by oldboy 2016.09.23
path = /backup

5.创建rsync用户

useradd rsync -s /sbin/nologin -M

6.创建备份目录及修改权限

mkdir /backup
chown -R rsync /backup
echo "rsync_backup:oldboy" >/etc/rsync.password
chmod 600 /etc/rsync.password

7.启动rsync

rsync --daemon

Jenkins的构建项目脚本

#切换到项目目录
JobName='xiangmu'
JobDir='/var/jenkins_home/www'
cd $JobDir
#如果有项目目录则删除
if [ -d $JobName ]:
then
rm -rf $JobName
fi
#克隆远程项目链接
git clone ssh://git@***/"$JobName".git
cd $JobName #删除git目录
rm -rf .git
#项目初始化
rsync -az $JobDir"/xiangmu-dev/dev/" $JobDir"/xiangmu"
#目录设置权限
chmod -R 777 $JobDir"/xiangmu/backend/runtime" && chmod -R 777 $JobDir"/xiangmu/backend/web/assets"
#远程copy
cd $JobDir"/"$JobName
#同步
rsync -avz --delete $JobDir"/"$JobName --exclude-from=$JobDir"/xiangmu-dev/xiangmu_exclude.list" rsync_backup@*.*.*.*::backup --password-file=/etc/rsync.password

rsync启动命令

#/usr/bin/rsync –daemon  

注:jenkins脚本为yii2的自动化部署。如果jenkins为root,最好rsync同步时也为root

基于Docker构建带有Rsync的Jenkins的更多相关文章

  1. DevOps实践之一:基于Docker构建企业Jenkins CI平台

    基于Docker构建企业Jenkins CI平台 一.什么是CI 持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...

  2. 视频私有云实战:基于Docker构建点播私有云平台

    私有云是为一个客户单独使用而构建的,因而提供对数据.安全性和服务质量的最有效控制.前置条件是客户拥有基础设施,并可以使用基础设施在其上部署应用程序.其核心属性是专有的资源.本篇文章将会结合网易云信的实 ...

  3. Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务

    本篇为Docker从入门到掉坑第二篇:基于Docker构建SpringBoot微服务,没有看过上一篇的最好读过 Docker 从入门到掉坑 之后,阅读本篇. 在之前的文章里面介绍了如何基于docker ...

  4. 【docker构建】基于docker构建wordpress博客网站平台

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...

  5. 基于docker构建jenkins和svn服务(转)

    码农们很定都知道svn的重要性,机器坏掉丢代码的惨痛教训想必很多人都有. jenkins可能很多人都不了解.这是一个持续集成的工具,在敏捷开发领域很流行:跟svn结合可以实现定期build.check ...

  6. Win10系统下基于Docker构建Appium容器连接Android模拟器Genymotion完成移动端Python自动化测试

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_196 Python自动化,大概也许或者是今年最具热度的话题之一了.七月流火,招聘市场上对于Python自动化的追捧热度仍未消减,那 ...

  7. 基于 Docker 构建轻量级 CI 系统:Gitea 与 Woodpecker CI 集成

    WoodpeckerCI 是一个由社区维护的 DroneCI 分支,使用 Apache License 2.0 许可证发布.社区版进一步扩展了 pipeline 的功能特性.支持对文件路径设置 pip ...

  8. 基于Docker构建Jenkins CI平台

    1.部署gitlab 1.1 部署gitlab docker run -d \ --name gitlab \ -p 8443:443 \ -p 9999:80 \ -p 9998:22 \ -v $ ...

  9. 基于 Docker 构建企业 Jenkins CI平台

    持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈. 持续部署(Continuous Deployment,CD):部 ...

随机推荐

  1. linux利用sendmail发送邮件的方法

    Linux利用sendmail发送邮件, 方法1 安装sendmail即可使用, mail -s "test" user@sohu.com bin/mail会默认使用本地sendm ...

  2. 显示/隐藏Mac隐藏文件

    显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏Mac隐藏文件的命令:defaults writ ...

  3. <script>的用法

    <script> </script> 是指 在 HTML 页面中插入一段 JavaScript

  4. java开发常用jar包

    mail.jar与activation.jar 里面包含了activation.jar和mail.jar两个包.通过里面的类的调用便可以达到发送电子邮件的目的 commons-beanutils.ja ...

  5. [转] 分享一个快的飞起的maven的settings.xml文件

    <?xml version="1.0"?> <settings> <localRepository>/home/yizhen/.m2/repos ...

  6. linkin大话java

    青春不灭,理想犹存,linkin--勿忘初心! 不知不觉已经和java并肩作战将近了2年,在这2年之中模模糊糊研究了java2ee领域的好多东西,但是都没有做系统的整理.以前写的笔记也是零零散散不成一 ...

  7. Java代码编写的一般性指导

    (1) 命名规则:这个最基本,也最重要,请牢记. 1,类名首字母应该大写. 2,字段.方法以及对象(句柄)的首字母应小写. 3,对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字 ...

  8. spark-遇到问题小结

     经常会遇到 类似 shuffle 0 的错误,或者 connect refuse .主要是shuffle 导致内存不足引起的.shuffle 分为 shuffle read 和write . 1. ...

  9. java IO(六):额外功能处理流

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  10. Android自定义View的套路

    一.自定义View的流程 1.属性设置 在styles.xml中设置控件属性,如果你想直接harcode可以忽略这步 <!--name为声明的"属性集合"名,可以随便取,但是 ...