$ docker run --rm php:7.0-apache
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Sun Sep 17 19:00:32.919074 2017] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/7.0.23 configured -- resuming normal operations
[Sun Sep 17 19:00:32.919122 2017] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
root@d591ab6febff:/etc/apache2/sites-available# cat 000-default.conf
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
6条答案
按热度按时间bkhjykvo1#
我想提供另一种(可能更像Docker)解决警告消息的方法。但首先,在盲目地设置
ServerName
之前,理解Apache实际上在做什么来弄清楚域名是有意义的。http://ratfactor.com/apache-fqdn.html上有一篇很好的文章解释了这个过程。一旦我们可以确认
getnameinfo
是Apache用来查找名称的,并且它使用/etc/nsswitch.conf
来确定查找的第一步,我们就可以确定要修改什么。如果我们检查容器内的
nsswitch.conf
,我们可以看到它在外部DNS之前查找/etc/hosts
文件中的主机:知道了这一点,也许我们可以在Docker运行时影响文件,而不是将其添加到我们的配置文件中?
如果我们看一下Docker运行参考文档,在www.example.com上有一个关于
/etc/hosts
文件的部分https://docs.docker.com/engine/reference/run/#managing-etchosts。它提到:您的容器将在/etc/hosts中包含一些行,这些行定义了容器本身的主机名以及localhost和其他一些常见内容。
因此,如果我们只设置容器主机名,它将被添加到
/etc/hosts
,这将解决Apache警告。幸运的是,使用--hostname
或-h
选项很容易做到这一点。如果我们将其设置为完全限定的域名,Docker将在我们的/etc/hosts
文件中设置它,Apache将拾取它。这是很容易尝试出来。警告示例(无主机名):
现在将
-h
选项设置为完全限定的域名:希望这有助于回答这个问题,并提供一些关于Apache和完全限定域名的学习。
9wbgstp72#
这不是一个错误,它只是一个警告,您可以安全地忽略它。它说的是
ServerName
没有设置,所以它会假设机器IP相同。如果查看
/etc/apache2/sites-available
中的默认配置,您会发现000-default.conf
和default-ssl.conf
在配置中注解了ServerName指令
因此,如果你担心的警告,你应该改变它的价值,你想像下面这样
您需要在文件夹中创建一个配置,然后使用Dockerfile覆盖默认配置中的文件。然后警告就会消失。
cpjpxq1n3#
如果你正在使用Docker,请这样做:从Dockerfile将ServerName localhost添加到apache2.conf,然后重新启动服务器
这应该可以消除警告。
您也可以从终端执行此操作
别忘了重启服务器
服务器重新启动后,错误应该会消失。
bkhjykvo4#
问题:
当运行docker文件时,出现以下错误:
AH00558:apache2:无法使用172.17.0.2可靠地确定服务器的完全限定域名。全局设置“ServerName”指令以抑制此消息
解决方案:
后藤
root
后藤
etc
文件然后后藤
apache2
然后是nano
apache2.conf
文件然后在
# The directory where shm and other runtime files will be stored.
行下面添加一行(回车)并写上:保存文件并退出root并再次运行
docker run
命令,它将工作。YouTube视频参考链接为同一问题:Watch
lzfw57am5#
要避免此警告,您可以使用您的IP设置ServerName。
请看下面的例子:
tagplus5/docker-php/7-apache/Dockerfile
(虽然iproute在Mac上的工作方式不同:这取决于你的主人。参见iproute2mac第8期)
8nuwlpux6#
我用来加
Dockerfile或entrypoint文件(如果使用)。