Docker PHP-APACHE 容器全局设置 ServerName 指令

Posted

技术标签:

【中文标题】Docker PHP-APACHE 容器全局设置 ServerName 指令【英文标题】:Docker PHP-APACHE container set the ServerName directive globally 【发布时间】:2018-07-29 19:37:09 【问题描述】:

当我尝试在 docker 上运行我的 php:apache 容器时收到此警告,请知道如何解决此问题。

AH00558:apache2:无法可靠地确定服务器的完整 限定域名,使用 172.17.0.2。设置“服务器名称” 全局指令以禁止显示此消息 AH00558: apache2: could 不能可靠地确定服务器的完全限定域名,使用 172.17.0.2。全局设置“ServerName”指令以禁止显示此消息 [Mon Feb 19 14:18:21.041074 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/7.0.27 已配置 -- 正在恢复 正常操作 [Mon Feb 19 14:18:21.041534 2018] [core:notice] [pid 1] AH00094:命令行:'apache2 -D FOREGROUND'

DOCKERFILE:

FROM php:7.0-apache
COPY . /var/www/html/
EXPOSE 80

【问题讨论】:

很好,但如何:P ?? 如果您知道确切的答案,请给我并感谢您提供的所有信息 :) 为什么要投反对票? :// 【参考方案1】:

去做like you would do on a regular system:

FROM php:7.0-apache
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
COPY . /var/www/html/
EXPOSE 80

您可以更改服务器名称以适合您的配置。

【讨论】:

我试过这个,但每次我想运行它时我都会从容器中退出,我也使用标志 lik -d -i -t 但我不明白为什么容器退出。跨度> 它是否退出并出现错误?执行 docker ps -a 时的状态是什么?如果您不在容器上运行命令,它将退出,这是预期的行为。你定义了一个入口点吗? Docker ps -a: `root@r00t:~/Documents/DOCKER/containers/dockerfiles/basic-03# docker run -t -d -p 80:4000 --name my-app- V4 helloworldnavphpv-7 b24a3c035a4d321189f137fd08163a6f262a3a4df8b8900d0fa67ff4f2ff068e根@ r00t:〜/文档/泊坞/容器/ dockerfiles /基本-03#搬运工PS -a容器ID IMAGE命令创建状态端口NAMES b24a3c035a4d helloworldnavphpv-7 “搬运工-PHP-entrypoi ...” 6秒前4 秒前退出 (0) my-app-v4 ` 容器似乎没有错误退出,因此没有执行任何命令。尝试添加一个入口点来启动 apache 拜托你能向我解释一下如何做到这一点,我是 DOCKER 的新手【参考方案2】:

瞧,感谢 aserre 的帮助:

FROM php:7.0-apache
COPY . /var/www/html/
EXPOSE 80
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

【讨论】:

您也可以在设置 ServerName 时暴露端口:RUN echo "ServerName localhost:80" >> /etc/apache2/apache2.conf 这意味着您可能不必显式调用EXPOSE 另外不要忘记安装database driver,以防您要连接到一个,例如 mysql【参考方案3】:

如果你使用 Centos 作为基础,它应该是这样的:

RUN echo "ServerName localhost" >> /etc/httpd/conf/httpd.conf
CMD apachectl -DFOREGROUND

问候

【讨论】:

以上是关于Docker PHP-APACHE 容器全局设置 ServerName 指令的主要内容,如果未能解决你的问题,请参考以下文章

为啥 PHP docker 容器无法查找 MYSQL 容器的主机名?

docker 自定义镜像

Python3 - Docker 容器日志清理方案

Python3 - Docker 容器日志清理方案

Python3 - Docker 容器日志清理方案

Python3 - Docker 容器日志清理方案