带有 GITLAB_OMNIBUS_CONFIG 的 Docker-Compose.yml 不起作用
Posted
技术标签:
【中文标题】带有 GITLAB_OMNIBUS_CONFIG 的 Docker-Compose.yml 不起作用【英文标题】:Docker-Compose.yml with GITLAB_OMNIBUS_CONFIG not working 【发布时间】:2022-01-05 10:03:56 【问题描述】:对不起,如果这是一个重复的问题——我发现了类似的问题,但似乎没有一个是我的确切用例……如果我错过了提及链接的内容,我们将不胜感激。
我正在尝试用 frontproxy、acme-companion 和 gitlab 组成一个 docker 堆栈。
目前,我正在使用一个设置,其中包含几个用于 frontproxy 和 gitlab 的 docker-compose.yml 文件,位于单独的目录中——这是工作,没有 acme-companion。
到目前为止,我尝试将其全部集成到一个文件中失败了;显然我搞砸了GITLAB_OMNIBUS_CONFIG
配置——我只是不明白我的错误在哪里。
version: '3.1'
services:
frontproxy:
restart: always
image: jwilder/nginx-proxy
labels:
- "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "certs-volume:/etc/nginx/certs:ro"
- "/etc/nginx/vhost.d"
- "/usr/share/nginx/html"
nginx-letsencrypt-companion:
restart: always
image: nginxproxy/acme-companion
volumes:
- "certs-volume:/etc/nginx/certs"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
gitlab:
image: gitlab/gitlab-ce:latest
restart: always
hostname: 'dev.redacted.com'
environment:
VIRTUAL_HOST: 'dev.redacted.com'
LETSENCRYPT_HOST: 'dev.redacted.com'
LETSENCRYPT_EMAIL: 'splash@redacted.com'
VIRTUAL_PROTO: 'https'
VIRTUAL_PORT: '443'
CERT_NAME: 'redacted.com'
GITLAB_OMNIBUS_CONFIG: |
# Email setup
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'admin@redacted.com'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab@redacted.com'
gitlab_rails['gitlab_email_reply_to'] = 'admin@redacted.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'mail.redacted.com'
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = 'admin@redacted.com'
gitlab_rails['smtp_password'] = 'redacted'
gitlab_rails['smtp_domain'] = 'redacted.com'
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_root_email'] = 'admin@redacted.com'
# HTTPS Setup
letsencrypt['enable'] = false
external_url 'https://dev.redacted.com'
gitlab_rails['gitlab_https'] = true
gitlab_rails['gitlab_port'] = 443
ports:
- '22:22'
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
volumes:
certs-volume:
编辑:
我没有具体说明我看到的错误——感谢您指出,@sytech!
因此,这是尝试使用 docker-compose up -d
启动堆栈时的确切错误消息:
ERROR: yaml.parser.ParserError: while parsing a block mapping
in "./docker-compose.yml", line 29, column 7
expected <block end>, but found '<scalar>'
in "./docker-compose.yml", line 38, column 9
【问题讨论】:
你已经安装在./config
到/etc/gitlab
你可以创建文件config/gitlab.rb
而不是使用环境变量。除此之外,您需要具体告诉我们什么不起作用。你有错误吗?或者配置根本没有按预期工作;究竟如何?预期的行为是什么?您观察到的行为是什么?
是的,抱歉,恐怕我说的不是太具体……另外,在玩了很多之后,我无法弄清楚具体的错误是什么;我设法让它在此期间工作,并将发布我现在正在运行的docker-compose.yml
--希望它可以帮助其他人。
看起来问题可能是在您的 YAML 中正确缩进第一条评论 (# Email setup
) 的错字。
我可以确认:这正是发生的事情,我又试了一次。您想将您的评论更改为答案,以便我可以接受吗?
这是有道理的,我猜...我投票决定关闭它,因为它的类型;我的理解是删除可能会产生不好的影响......
【参考方案1】:
虽然我无法弄清楚我在使用 3.1 版的 docker-compose.yml
时遇到的具体问题。我设法编写了一个现在对我有用的东西——也许它对其他人也有用:
version: '2.1'
services:
frontproxy:
restart: always
image: jwilder/nginx-proxy
labels:
com.github.nginxproxy.acme-companion.frontproxy: true
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "certs-volume:/etc/nginx/certs:ro"
- "/etc/nginx/vhost.d"
- "/usr/share/nginx/html"
nginx-letsencrypt-companion:
restart: always
image: nginxproxy/acme-companion
volumes:
- "certs-volume:/etc/nginx/certs"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
depends_on:
- "frontproxy"
volumes_from:
- frontproxy
gitlab:
image: gitlab/gitlab-ce:latest
restart: always
hostname: 'dev.redacted.com'
environment:
VIRTUAL_HOST: 'dev.redacted.com'
LETSENCRYPT_HOST: 'dev.redacted.com'
LETSENCRYPT_EMAIL: 'admin@redacted.com'
VIRTUAL_PROTO: 'https'
VIRTUAL_PORT: '443'
CERT_NAME: 'dev.redacted.com'
GITLAB_SKIP_UNMIGRATED_DATA_CHECK: 'true'
GITLAB_OMNIBUS_CONFIG: |
# Email setup
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'admin@redacted.com'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab@Redacted'
gitlab_rails['gitlab_email_reply_to'] = 'admin@redacted.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'mail.redacted.com'
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = 'admin@redacted.com'
gitlab_rails['smtp_password'] = 'myfancypassword'
gitlab_rails['smtp_domain'] = 'redacted.com'
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_root_email'] = 'admin@redacted.com'
# HTTPS Setup
letsencrypt['enable'] = false
external_url 'https://dev.redacted.com'
gitlab_rails['gitlab_https'] = true
gitlab_rails['gitlab_port'] = 443
ports:
- '22:22'
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
volumes:
certs-volume:
【讨论】:
【参考方案2】:我也遇到了同样的问题。
当我使用 GITLAB_OMNIBUS_CONFIG 环境变量时,这些设置似乎不适用。如果我只将易于识别的设置之一复制到 gitlab.rb 配置中,它就可以正常应用。
这是容器中存在的环境变量:
GITLAB_OMNIBUS_CONFIG="external_url 'https://dev.foo.com';nginx['redirect_http_to_https'] = true;gitlab_rails['gitlab_https'] = true;gitlab_rails['gitlab_email_enabled'] = true;gitlab_rails['gitlab_email_from'] = 'dev@foo.com';gitlab_rails['gitlab_email_display_name'] = 'DEV-GitLab';gitlab_rails['gitlab_email_reply_to'] = 'dev@foo.com';gitlab_rails['gitlab_email_subject_suffix'] = 'DEV-GIT';gitlab_rails['backup_keep_time'] = 172800;gitlab_rails['gitlab_shell_ssh_port'] = 9999;"
然而,如果我将 SSH 端口选项添加到 gitlab.rb 并重新配置,我会在克隆地址中看到它。因此,虽然我没有使用组合方法,但我正在使用“podman run”启动容器并传递类似于 gitlab docker 指南中描述的选项。
【讨论】:
我猜你的问题和我的不一样,我担心——虽然你没有机会意识到,因为我最初没有说明我的确切错误信息。对此感到抱歉。但我认为你已经可以让你的工作了? 并非如此。但事实证明,这里有多个障碍。我验证的一件事是 gitlab.rb 文件默认为空;实际上所有的cmets。所以,我改变了我的脚本,用我关心的条目替换了综合将安装的 gitlab.rb。只要 gitlab 继续发出有效的空配置,这是可靠的。另一个更糟糕的问题是 Ubuntu。我正在努力以类似的自动化方式在另一个操作系统上安装。以上是关于带有 GITLAB_OMNIBUS_CONFIG 的 Docker-Compose.yml 不起作用的主要内容,如果未能解决你的问题,请参考以下文章