公司gitlab是部署在docker里面的,但是其数据持久化这块做的有点问题,跟宿主机的共享目录明显偏小,数据不全(怀疑是迁移后才共享的,迁移之前可能是原生部署或者没有共享目录)
从容器中导出了gitlab需要用的文件,这里注意 官方文档规定了gitlab有固定的升级路线,不能跳(不然当场挂给你看),我用了官方的路径,一开始启动容器时候就遇到了文件权限问题
docker 下gitlab 迁移的文档我是参照这位仁兄的博客 浩如yan海 搞的,其中环境变量的这块我没有按照他写的做。
运行容器后,查看容器log会发现一堆东西启动问题,简单的理解就是文件权限有问题。
这里容器log中一开始就提示如果碰到权限问题 使用命令:
docker exec -it gitlab update-permissions
来自动修改相关文件权限,但是你会发现你容器都stop了这可咋弄?
这里小技巧 启动容器时候 要加参数 --detach 或者 -d 就是启动不管了
然后马上运行上面的 docker exec -it 容器名 update-permissions
然后查看一下容器log,我用docker attach (这个是attach 如果退出不想容器挂掉 只能关terminal 不然可以用docker logs)进去发现升级过程一切顺利
登录试一下....唉唉唉...咋又不好使了呢,看容器的内部提示 PID记录文件无法读写
因为刚刚修复文件权限时候,这个PID文件在用,所以没有弄好
这里可以用 docker exec -it 容器名 /bin/bash (这个就可以输入exit 正常退出,不会导致容器挂掉) 的方式 ,直接
chmod 777 /var/opt/gitlab/gitaly/gitaly.pid
来修改相关文件的权限
重启下容器~ 登录后一切正常.....
友情提示,第一次升级后务必确保所有功能正常,不然从新搞的话要按照路径重新升级 ..... 我就TM升级7个版本弄了两次 好累啊....