Docker容器中Gitlab EE初始配置无法启动解决方案

152次阅读
没有评论

问题描述

在运行Docker容器时遇到了问题,系统环境是Ubuntu 18.04.2 LTS,Docker版本是18.09.5,Gitlab版本是gitlab-ee=12.0.3-ee.0。用户尝试使用以下命令启动Gitlab容器,但容器在启动20秒后重启并进入无限循环:

docker run -i \
  --hostname gitlab2.michael-thompson.net \
  --name gitlab \
  --restart unless-stopped \
  --volume /docker/gitlab/config:/etc/gitlab:Z \
  --volume /docker/gitlab/log:/var/log/gitlab:Z \
  --volume /docker/gitlab/data:/var/opt/gitlab:Z \
  --net=bridge \
  --env TZ=Australia/Perth \
  gitlab/gitlab-ee:latest

在Gitlab尝试“迁移”数据库时,出现了以下错误:

PG::DuplicateTable: ERROR:  relation "audit_events" already exists

用户已经尝试了一些解决方法,但问题依然存在,包括运行docker exec -it gitlab update-permissions等。

解决方案

请注意以下操作可能会有版本差异或风险,做好备份工作。

解决方案1:清空数据重启

由于错误信息提示数据库表”audit_events”已经存在,建议清空数据重新启动容器,并在启动之前确保数据库正确初始化:
1. 停止并删除现有的Gitlab容器。
2. 清空/docker/gitlab/data目录中的数据,以便重新初始化。
3. 重新运行Gitlab容器:

docker run -i \
  --hostname gitlab2.michael-thompson.net \
  --name gitlab \
  --restart unless-stopped \
  --volume /docker/gitlab/config:/etc/gitlab:Z \
  --volume /docker/gitlab/log:/var/log/gitlab:Z \
  --volume /docker/gitlab/data:/var/opt/gitlab:Z \
  --net=bridge \
  --env TZ=Australia/Perth \
  gitlab/gitlab-ee:latest
  1. 等待容器启动完成。
  2. 如果容器启动成功并且数据库初始化完成,恢复之前的备份数据。

解决方案2:联系Gitlab支持

用户可以考虑联系Gitlab支持,特别是在使用Gitlab EE的情况下。他们可能能够提供专业的支持和解决方案,尤其是在商业版中遇到问题时。

解决方案3:备份恢复数据

如果用户有可用的备份数据,可以在Gitlab容器正确启动后,将备份数据恢复到容器中。这需要在容器初始化后进行,确保数据库正确创建,并在恢复数据之前做好相应的准备工作。

用户提到的问题可能与数据库状态不一致导致的,因此在清空数据或恢复备份数据之前,要确保数据库正确初始化和创建,以避免类似的问题。

注意: 以上解决方案是基于用户提供的问题描述和最佳回答的信息,可能需要根据具体情况进行调整。在执行操作前,请确保备份重要数据以防万一。

正文完