在docker启动gitlab的时候,如果把数据文件映射到机器 在机器的文件夹或者文件权限修改时 就会无法启动.情况如下:
docker run -d -p 8090:80 --name gitlab -v /hdata/dockerdata/gitlab/etc:/etc/gitlab -v /hdata/dockerdata/gitlab/log:/var/log/gitlab -v /hdata/dockerdata/gitlab/data:/var/opt/gitlab -m 16000m --cpus=2 gitlab/gitlab-ce
这样 容器的文件都映射到了/hdata/dockerdata/gitlab目录下 这样 哪怕容器被删除 重新建立容器 只要文件夹目录对应上 所有数据则都不会丢失的.
有一次,在更改其他文件夹的权限时,不小心把这个文件下的权限也修改了 执行命令
chown -R 777 /hdata/dockerdata
然后gitlab容器就无法push 重启容器后 容器一直无法启动 开始报各种错误.
从网上找reconfig的方法也不起作用 其实 其主要原因是文件所有者问题
现在所有的所有者基本都是777 还有少量的是root 这样 通过日志可以看到 有很多失败 没有权限问题
解决问题的办法:
1 另启用一个gitlab的容器 不过要映射不同的文件夹,目的是观察不同文件以及文件夹的所有者 很多都是998 也有996 992 的 这些都非常重要,如果所有者有误 是会造成程序无法访问的
2 打开有问题gitlab的日志观察 看哪里有问题 一般会定位到文件 然后对比所有者 如果不同 就chown 998 -R 等命令进行修改.
如果在redis文件夹下 有很多生成的文件夹下文件无法读取 可以直接删掉 在这里 肯定会报错 另外 其他的根据提示修改即可 最后有个错误是db无法打开 也是redis下的 把这些都修改后 容器就可以正常启动啦