使用Docker Compose部署GitLab EE时遇循环异常错误求助
GitLab容器启动循环报错无法访问
当前使用的docker-compose配置
version: "3.8" networks: traefik_network: external: true services: gitlab: container_name: gitlab image: 'gitlab/gitlab-ee:latest' restart: always hostname: 'my-server' environment: GITLAB_HOME: ./srv/gitlab # GITLAB_OMNIBUS_CONFIG: | # external_url 'https://my-server' # # Add any other gitlab.rb configuration here, each on its own line ports: - '3380:80' - '3443:443' - '3322:22' volumes: - ./srv/gitlab/config:/etc/gitlab' - ./srv/gitlab/logs:/var/log/gitlab' - ./srv/gitlab/data:/var/opt/gitlab' shm_size: '256m' networks: - traefik_network
注:配置中volumes字段的每一行末尾多了一个单引号,这是语法错误,会导致Docker无法正确解析卷映射,是引发后续问题的核心原因之一。
错误信息翻译
容器启动后循环输出以下类型错误:
错误执行资源
file[/var/opt/gitlab/.ssh]的create操作
权限被拒绝 @ apply2files - /var/opt/gitlab/.ssh
...
错误执行资源ruby_block[directory resource: /var/opt/gitlab/gitlab-rails/shared]的run操作
无法创建从'/var/opt/gitlab/gitlab-rails/shared'到'/var/opt/gitlab/shared'的符号链接,因为目标'/var/opt/gitlab/shared'不存在
解决方案
1. 修正docker-compose语法错误
将volumes字段的多余单引号删除,同时建议使用绝对路径配置GITLAB_HOME避免解析问题,修正后的配置如下:
version: "3.8" networks: traefik_network: external: true services: gitlab: container_name: gitlab image: 'gitlab/gitlab-ee:latest' restart: always hostname: 'my-server' environment: GITLAB_HOME: /srv/gitlab # 后续配置SSL时可启用以下内容 # GITLAB_OMNIBUS_CONFIG: | # external_url 'https://my-server' # nginx['redirect_http_to_https'] = true # # 添加其他gitlab.rb配置 ports: - '3380:80' - '3443:443' - '3322:22' volumes: - ./srv/gitlab/config:/etc/gitlab - ./srv/gitlab/logs:/var/log/gitlab - ./srv/gitlab/data:/var/opt/gitlab shm_size: '256m' networks: - traefik_network
2. 清理残留目录并重新初始化
- 停止并删除现有容器:
docker-compose down -v - 删除宿主机上的
./srv/gitlab目录:rm -rf ./srv/gitlab - 重新启动容器:
docker-compose up -d,让GitLab自动创建目录并设置正确权限
3. 额外建议
- 避免手动修改卷目录的权限,GitLab容器会自动处理目录所有者和权限设置
- 若后续集成Traefik出现问题,可先移除
networks配置,用默认网络启动确认GitLab正常运行后再逐步添加反向代理配置
内容的提问来源于stack exchange,提问作者blam
相关产品推荐
相关产品推荐

