我正在尝试在内部服务器中将 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'
答案 0 :(得分:1)
不能完全确定是否还有其他地方不起作用,但是我很确定hostname: 'localhost:4080'
块是不正确的。它应该只是没有端口的主机名。尝试注释掉该行,并尝试完全不定义用于测试的主机名。
答案 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