主机上的Apache 2.24 w /反向代理到容器
$ sudo docker version
Client:
Version: 17.06.0-ce
API version: 1.30
Go version: go1.8.3
Git commit: 02c1d87
Built: Fri Jun 23 21:23:31 2017
OS/Arch: linux/amd64
Server:
Version: 17.06.0-ce
API version: 1.30 (minimum version 1.12)
Go version: go1.8.3
Git commit: 02c1d87
Built: Fri Jun 23 21:19:04 2017
OS/Arch: linux/amd64
Experimental: false
$ sudo docker info
Containers: 1
Running: 1
Paused: 0
Stopped: 0
Images: 3
Server Version: 17.06.0-ce
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 30
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: cfb82a876ecc11b5ca0977d1733adbe58599088a
runc version: 2d41c047c83e09a6d61d464906feb2a2f3c52aa4
init version: 949e6fa
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.4.0-47-generic
Operating System: Ubuntu 16.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 15.67GiB
Name: <masked>
ID: CWMI:WONN:2RZP:5HFD:GN52:BO3S:GNNW:P6WJ:5MQJ:PQLG:ZTWR:4JHM
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
我已经拆掉并在上周重建了这台服务器很多次,以便在我的特定设置中运行各种其他项目。看起来当我第一次构建服务器时,它保存了很多我的配置,但现在不允许我更改它。
以下是我gitlab.rb
的SMTP /电子邮件部分(我的实际fqdn替换为&#34; mydomain.com&#34;:
### Email Settings
# gitlab_rails['gitlab_email_enabled'] = true
# gitlab_rails['gitlab_email_from'] = 'gitlab@mydomain.com'
# gitlab_rails['gitlab_email_display_name'] = 'GitLab'
# gitlab_rails['gitlab_email_reply_to'] = 'noreply@mydomain.com'
# gitlab_rails['gitlab_email_subject_suffix'] = ''
### GitLab email server settings
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Use smtp instead of sendmail/postfix.**
# gitlab_rails['smtp_enable'] = true
# gitlab_rails['smtp_address'] = "mysmtp"
# gitlab_rails['smtp_port'] = 587
# gitlab_rails['smtp_user_name'] = "<username>"
# gitlab_rails['smtp_password'] = "<pass>"
# gitlab_rails['smtp_domain'] = "mysmtp"
# gitlab_rails['smtp_authentication'] = "plain"
# gitlab_rails['smtp_enable_starttls_auto'] = true
# gitlab_rails['smtp_tls'] = true
###! **Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'**
###! Docs: http://api.rubyonrails.org/classes/ActionMailer/Base.html
# gitlab_rails['smtp_openssl_verify_mode'] = 'none'
# gitlab_rails['smtp_ca_path'] = "/etc/ssl/certs"
# gitlab_rails['smtp_ca_file'] = "/etc/ssl/certs/ca-certificates.crt"
根据GitLab的SMTP文档中的信息,我应该能够通过ruby控制台测试发送邮件,如下所示:
gitlab-rails console
irb(main):007:0> Notify.test_email('adam@adamwgay.com', 'Message Subject', 'Message Body').deliver_now
但是,控制台的输出是意外的。我gitlab.rb
的所有设置都不存在,而且似乎使用了一些默认选项(包括尝试使用sendmail
,它会在开头时向右发出错误)。
irb(main):007:0> Notify.test_email('adam@adamwgay.com', 'Message Subject', 'Message Body').deliver_now
Notify#test_email: processed outbound mail in 1.2ms
sh: 1: /usr/sbin/sendmail: not found
Sent mail to adam@adamwgay.com (5.8ms)
Date: Tue, 25 Jul 2017 19:16:15 +0000
From: GitLab <gitlab@gitlab.mydomain.com>
Reply-To: GitLab <noreply@gitlab.mydomain.com>
To: adam@adamwgay.com
Message-ID: <597798ff6423a_9593fdebe2c710863b8@gitlab.mydomain.com>
Subject: Message Subject
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Auto-Submitted: auto-generated
X-Auto-Response-Suppress: All
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Message Body</p></body></html>
=> #<Mail::Message:70225704413280, Multipart: false, Headers: <Date: Tue, 25 Jul 2017 19:16:15 +0000>, <From: GitLab <gitlab@gitlab.mydomain.com>>, <Reply-To: GitLab <noreply@gitlab.mydomain.com>>, <To: adam@adamwgay.com>, <Message-ID: <597798ff6423a_9593fdebe2c710863b8@gitlab.mydomain.com.mail>>, <Subject: Message Subject>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>
我在这个输出中看到了一些问题,有些事情告诉我gitlab.rb中的SMTP设置没有正确解析/传递给GitLab系统:
From
和Reply-To
字段与我在gitlab.rb
中设置的字段不匹配sh: 1: /usr/sbin/sendmail: not found
似乎表明系统仍在尝试使用sendmail。同样,不是我在gitlab.rb
进一步看,似乎我的gitlab.rb
文件中没有任何内容在运行gitlab-ctl reconfigure
然后重新启动容器时被更新。
gitlab.rb
文件中设置了什么。 是否有另一种方法可以将gitlab.rb
的设置应用到我错过的容器中?
我的操作顺序:
gitlab.rb
sudo docker exec gitlab gitlab-ctl reconfigure
或仅gitlab-ctl reconfigure
sudo docker restart gitlab
或gitlab-ctl restart
即使两种方式都给我一个成功的重新配置消息,但设置不会改变。在某些时候,我对gitlab.rb
所做的更改已存储到容器中,因为每次重建它时,某些主机名和设置都会保持不变,并且我的实例会很快返回所有必需的证书和HTTPS参数。我似乎无法通过配置文件对我的gitlab容器进行任何进一步的更改。
这里是我如何构建容器,也许这是问题的一部分?我错过了一些简单的东西吗?
sudo docker run --detach \
--hostname gitlab.mydomain.com \
--publish 10443:443 --publish 10080:80 --publish 10022:22 --publish 10587:587 --publish 10025:25 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
如果我在容器中运行gitlab-ctl diff-config
,它似乎告诉我确实存在另一个gitlab.rb,它正在从/etc/gitlab/
目录中取出它在容器内。它甚至会向我显示配置中的值与我在&#34;包可用配置中看到的错误值相比较。&#34;
走下去,认为这可能是一个权限问题。我不确定主机系统上存在的任何持久卷的建议所有权究竟是什么。每次重新启动容器时,我最终都会被root:root
拥有。即使我使root:docker
拥有的文件夹,然后重新配置/重置,它也会恢复为root:root
。不知道权限是否是问题,只是发布更新以供参考,以防它帮助我追踪问题。
好的,发现了一个非常迂回的方式来纠缠我的问题。同样,我认为这只是一个绑带,而我的gitlab.rb
应该为我处理这个重新配置,我必须在有空的时候跟踪它。
bandaid的要点:我在我需要编辑的容器文件系统上单独编辑了每个.yml和.rb文件(现在只有2个),并按照以下方式编写了我的服务器重建脚本。我不得不执行gitlab-ctl restart
命令,因为重新启动整个容器会再次覆盖这两个文件。
sudo docker run --detach \
--hostname gitlab.mydomain.com \
--publish 10443:443 --publish 10080:80 --publish 10022:22 --publish 10587:587 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
sudo docker exec gitlab cp /etc/gitlab/gitlab.yml /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
sudo docker exec gitlab cp /etc/gitlab/smtp_settings.rb /opt/gitlab/embedded/service/gitlab-rails/config/initializers/smtp_settings.rb
sudo docker exec gitlab gitlab-ctl restart
我将配置文件和所有参数注释掉了......从我需要的内容中移除了单个#
,现在一切都很顺利。
答案 0 :(得分:0)
正如@jdno指出的那样,我将配置文件参数注释掉了。