访问在Docker容器中运行的GitLab

时间:2019-09-13 13:09:32

标签: docker docker-compose gitlab gitlab-ee

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

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'

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

对于遇到此问题的任何人:

答案是不要在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'

this thread中说明了原因-具体来说,this answer

要在此处进行总结(引用原始答案),

  

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