原理:
1.docker加载windows系统共享目录里面的文件很慢
2.docker加载容器内部目录的文件很快
3.rsync同步文件时只会同步有差异的文件,所以同进的时候挺快
步骤:
1.容器中安装 rsync
apt-get install rsync
2.同步忽略文件(第一次部署全部同步)
第一次部署执行
rsync -azv --delete /home/www/wwwroot/base_swoft/ /home/www/wwwrsync/base_swoft
/home/shell/rsync/exclude/_docker
vendor
.git
.idea
.phpstorm.meta.php
exclude.log
public
runtime
test
key
3.同步脚本
/home/shell/rsync/base_swoft/docker.sh
#!/bin/bash
Project_Name='base_swoft'
#code rsync
echo "\033[32m---------rsync code start---------\033[0m"
rsync -azv --delete --exclude-from=/home/shell/rsync/exclude/_docker /home/www/wwwroot/${Project_Name}/ /home/www/wwwrsync/${Project_Name}
echo "\033[32m---------rsync code end---------\033[0m\n"
#uploadfiles rsync
echo "\033[32m---------rsync uploadfiles start---------\033[0m"
rsync -azv /home/www/wwwrsync/${Project_Name}/public/uploadfiles/ /home/www/wwwroot/${Project_Name}/public/uploadfiles
echo "\033[32m---------rsync uploadfiles end---------\033[0m\n"
php /home/www/wwwrsync/${Project_Name}/bin/swoft ws:start
以后启动项目进入目录/home/shell/rsync/base_swoft/,执行sh docker.sh即可。
base_swoft_pw.sh
#!/bin/bash
Rsync_path='wwwrsync'
Project_Name='base_swoft_pw'
cd /home/www
if [ ! -d ${Rsync_path} ];then
mkdir ${Rsync_path}
fi
cd /home/www/${Rsync_path}/
#判断要创建的项目目录是否已经存在,不存在则创建
if [ ! -d ${Project_Name} ];then
mkdir ${Project_Name}
rsync -azv --delete --exclude=".git" --exclude=".idea" /home/www/wwwroot/${Project_Name}/ /home/www/${Rsync_path}/${Project_Name}
else
#code rsync
echo "\033[32m---------rsync code start---------\033[0m"
rsync -azv --delete --exclude-from=/home/www/wwwroot/dockershell/rsync/exclude/_docker /home/www/wwwroot/${Project_Name}/ /home/www/${Rsync_path}/${Project_Name}
echo "\033[32m---------rsync code end---------\033[0m\n"
#uploadfiles rsync
echo "\033[32m---------rsync uploadfiles start---------\033[0m"
rsync -azv /home/www/${Rsync_path}/${Project_Name}/public/uploadfiles/ /home/www/wwwroot/${Project_Name}/public/uploadfiles
echo "\033[32m---------rsync uploadfiles end---------\033[0m\n"
fi
php /home/www/${Rsync_path}/${Project_Name}/bin/swoft ws:start