我无法使用 docker-compose 启动 gitlab-ce

Posted

技术标签:

【中文标题】我无法使用 docker-compose 启动 gitlab-ce【英文标题】:I can't launch gitlab-ce with docker-compose 【发布时间】:2018-03-09 00:25:09 【问题描述】:

我想在我的电脑上安装 GitLab 并学习 Docker。

当我使用时

docker run --hostname monlogiciel.com --publish 443:443 --publish 8000:80 --publish 22:22 --name gitlab --volume ~/dev/docker/gitlab/config:/etc/gitlab --volume ~/dev/docker/gitlab/logs:/var/log/gitlab --volume ~/dev/docker/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest

它有效:我可以连接到http://monlogiciel:8000/,Gitlab 就在这里。

我的/etc/hosts 包含

127.0.0.1       localhost monlogiciel.com

但是,当我想使用docker-compose up -d 时,它不起作用。

这是我的 docker-compose:

version: '3.3'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    hostname: 'monlogiciel.com'
    ports:
      - '8000:80'
      - '443:443'
      - '22:22'
    volumes:
      - '~/dev/docker/gitlab/config:/etc/gitlab'
      - '~/dev/docker/gitlab/logs:/var/log/gitlab'
      - '~/dev/docker/gitlab/data:/var/opt/gitlab'

这有什么问题?

这是日志

gitlab_1  | ==> /var/log/gitlab/unicorn/unicorn_stderr.log <==

gitlab_1 |我,[2017-09-29T10:09:40.311993 #1493] INFO -- : 监听 addr=127.0.0.1:8080 fd=19 gitlab_1 | F,[2017-09-29T10:09:40.314300 #1493] 致命 -- : 添加监听器时出错 addr=/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket gitlab_1 | Errno::ENAMETOOLONG:文件名太长 - /var/opt/gitlab/gitlab-rails/sockets/gitlab.socket 的连接(2) gitlab_1 | /opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/unicorn-5.1.0/lib/unicorn/socket_helper.rb:122:in initialize' gitlab_1 | /opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/unicorn-5.1.0/lib/unicorn/socket_helper.rb:122:innew' gitlab_1 | /opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/unicorn-5.1.0/lib/unicorn/socket_helper.rb:122:in bind_listen' gitlab_1 | /opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/unicorn-5.1.0/lib/unicorn/http_server.rb:231:inlisten' gitlab_1 | /opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/unicorn-5.1.0/lib/unicorn/http_server.rb:808:in block in bind_new_listeners!' gitlab_1 | /opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/unicorn-5.1.0/lib/unicorn/http_server.rb:808:ineach' gitlab_1 | /opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/unicorn-5.1.0/lib/unicorn/http_server.rb:808:in bind_new_listeners!' gitlab_1 | /opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/unicorn-5.1.0/lib/unicorn/http_server.rb:130:instart' gitlab_1 | /opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/unicorn-5.1.0/bin/unicorn:126:in <top (required)>' gitlab_1 | /opt/gitlab/embedded/bin/unicorn:23:inload' gitlab_1 | /opt/gitlab/embedded/bin/unicorn:23:in `' gitlab_1 | gitlab_1 | ==> /var/log/gitlab/unicorn/unicorn_stdout.log /var/log/gitlab/gitlab-monitor/current /sidekiq gitlab_1 | gitlab_1 | ==> /var/log/gitlab/unicorn/current /var/log/gitlab/unicorn/unicorn_stderr.log /var/log/gitlab/gitlab-monitor/current /数据库 gitlab_1 | 2017-09-29_10:09:45.23931 127.0.0.1 - - [29/Sep/2017:10:09:45 UTC]“获取/处理 HTTP/1.1”200 457 gitlab_1 | 2017-09-29_10:09:45.23962-->/进程 gitlab_1 | 2017-09-29_10:09:56.06482 127.0.0.1 - - [29/Sep/2017:10:09:56 UTC]“GET /sidekiq HTTP/1.1”200 4177 gitlab_1 | 2017-09-29_10:09:56.06511-->/sidekiq gitlab_1 | gitlab_1 | ==> /var/log/gitlab/gitlab-rails/production.log /var/log/gitlab/gitlab-monitor/current /数据库 gitlab_1 | 2017-09-29_10:10:00.23730 127.0.0.1 - - [29/Sep/2017:10:10:00 UTC]“获取/处理 HTTP/1.1”200 457 gitlab_1 | 2017-09-29_10:10:00.23766-->/进程 gitlab_1 | gitlab_1 | ==> /var/log/gitlab/unicorn/current

【问题讨论】:

你能运行 docker-compose up 看看日志在说什么吗? 您的问题是您没有提供任何证书,并且您尝试在撰写中使用https 而不是http 是不是由:environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://monlogiciel.com'引起的 我尝试不使用environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://monlogiciel.com' ,它可以工作。现在我有另一个问题 当我转到 monlogiciel.com:8000 时,GitLab 没有响应 (502) 糟糕,GitLab 响应时间过长。尝试刷新页面,或返回并再次尝试该操作。如果此问题仍然存在,请联系您的 GitLab 管理员。 【参考方案1】:

问题是由 gitlab.socket(由 unicorn 创建和使用)在已安装的卷路径下引起的,该路径解析为主机文件系统路径过长。

您可以通过修改gitlab配置unicorn['socket'],将gitlab.socket创建路径移到已挂载的卷路径之外来保持原始配置,例如:

版本:'3.3' 服务: GitLab: 图片:“gitlab/gitlab-ce:最新” 重启:总是 主机名:'monlogiciel.com' 环境: GITLAB_OMNIBUS_CONFIG:| unicorn['socket'] = '/opt/gitlab/var/unicorn/gitlab.socket' 端口: - '8000:80' - '443:443' - '22:22' 卷: - '~/dev/docker/gitlab/config:/etc/gitlab' - '~/dev/docker/gitlab/logs:/var/log/gitlab' - '~/dev/docker/gitlab/data:/var/opt/gitlab'

【讨论】:

以上是关于我无法使用 docker-compose 启动 gitlab-ce的主要内容,如果未能解决你的问题,请参考以下文章

使用`docker-compose run`时无法调试,但`docker-compose up`有效

无法使用“ docker-compose”连接(桥接)任何数据库

使用docker-compose和https时如何让Visual Studio启动正确的URL

如何在 ovh 主机上使用 docker-compose

docker-compose 无法以 npm ERR 启动! enoent ENOENT:没有这样的文件或目录,打开'/usr/src/app/package.json'

Zuul 网关无法连接到 Docker-Compose 下的 Eureka 服务注册表