起因
由于使用docker部署禅道,一段时间后发现硬盘空间占用几乎达到100%,于是扩容后需要迁移禅道,结果出现诸多问题。具体遇坑记录如下
一、环境
Centos、Docker version 20.10.14、禅道 idoop/zentao:11.5
二、清除其他不用的容器和日志
1、docker system prune -a 有可能生效甚微
2、清除日志,如果你的docker 根目录是/var/lib/docker的话
#!/bin/bash
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"
执行上面脚本
三、迁移禅道
1、停止原来的禅道,假如原来容器是zentao_server1,你有一个新扩容的卷/home
docker stop zentao_server1
2、拷贝文件备份,非常重要!!!
docker cp zentao_server1:/opt/zbox/ /home/bak/
cp -r /home/bak/zbox/ /home/
3、启动新容器,假如你想用81端口访问
docker run -d -p 81:80 \
-e ADMINER_USER="root" -e ADMINER_PASSWD="xxx" \
-e BIND_ADDRESS="false" \
-v /home/zbox/:/opt/zbox/ \
--name zentao-server \
idoop/zentao:11.5
如果扩容的时候异常重启了容器,这时候可能会报错
错误一:can't find /opt/zbox/app/zentao/VERSION
这时候可以拷贝一个新容器/opt/zbox/app/zentao进去
错误二:upload已存在
备份以后删除,然后重启,这时候原来的文件可能丢了
把备份的upload覆盖原来upload,cp -r upload /home/zbox/app/zentao/www/data/数据就回来了
四、修改docker根目录
最好修改根目录到新的盘,否则又用着用着又满了