0

我正在尝试将 GitLab 设置为内部服务器中的 docker 容器。假设服务器的 IP 是10.10.10.10. 下面是我用来启动容器的 docker-compose 文件。我无法通过localhost:4080(从服务器内的浏览器)或通过 IP访问 http url 10.10.10.10:4080。我想了解我在这里缺少什么。

version: '2'

services:

  gitlab:
    image: gitlab-ee-img:12.0.9-ee.0
    container_name: gitlab
    restart: always
    hostname: 'localhost:4080'
    # environment:
    #   GITLAB_OMNIBUS_CONFIG: |
    #     # Add any other gitlab.rb configuration here, each on its own line
    #     # external_url 'https://gitlab.example.com'
    #     external_url 'http://127.0.0.1:4080'
    ports:
      - '4080:80'
      - '4443:443'
      - '4022:22'
    volumes:
      - '/data/gitlab/config:/etc/gitlab'
      - '/data/gitlab/logs:/var/log/gitlab'
      - '/data/gitlab/data:/var/opt/gitlab'
4

2 回答 2

1

不完全确定是否有其他东西在那里不起作用,但我相当确定该hostname: 'localhost:4080'块不正确。它应该只是没有端口的主机名。尝试注释掉该行并尝试完全不定义主机名进行测试。

src:https ://docs.docker.com/compose/compose-file/#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir

于 2019-09-13T13:25:32.077 回答
0

对于遇到这个 SO 问题的任何人:

答案是不要将自定义端口映射到 docker 中的 80。相反,这将起作用:

version: '2'

services:

  gitlab:
    image: gitlab-ee-img:12.0.9-ee.0
    container_name: gitlab
    restart: always
    hostname: '10.10.10.10'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        # Add any other gitlab.rb configuration here, each on its own line
        # external_url 'https://gitlab.example.com'
        external_url 'http://10.10.10.10:4080'
        gitlab_rails['gitlab_shell_ssh_port'] = 4022
    ports:
      - '4080:4080'
      - '4443:443'
      - '4022:22'
    volumes:
      - '/data/gitlab/config:/etc/gitlab'
      - '/data/gitlab/logs:/var/log/gitlab'
      - '/data/gitlab/data:/var/opt/gitlab'

这个线程解释了原因- 具体来说,这个答案

在这里总结(引用原始答案),

gitlab 的默认端口是 80,但是当你使用 external_url 子句时,gitlab 会改变它要监听或解析的 ngnix 端口,它不仅仅是一个别名。

如果您在容器内执行命令 curl http://localhost,在放置 external_url http://10.10.10.10:4080后,它不会响应端口 80,您可以尝试使用命令 curl http://10.10。 10.10:4080

于 2019-09-13T13:49:47.560 回答