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
