我正在尝试为现有站点设置自定义docker容器。为此,我想提供我自己的自定义vhost
配置与ServerName
。
但是当我尝试添加自定义vhost configuration
并重新启动apache时,我得到Apache无法确定全局名称的警告:Could not reliably determine the server's fully qualified domain name, using 172.26.0.2. Set the 'ServerName' directive globally to suppress this message
重要的是,当我登录容器的shell并手动运行service apache2 restart
时,我不再收到此警告。
如何在构建中抑制它?我应该以某种方式向作曲家提供vhost
吗?
这是我的docker-compose.yml
就像:
version: '3'
services:
web:
build:
context: ./etc/php
args:
- APP_HOST=${APP_HOST}
ports:
- ${APP_PORT}:80
- ${APP_PORT_SSL}:443
volumes:
- ./var/bin/:/tmp/bin/
- ./app/:/var/www/html/
- ./log/:/var/log/
- ./etc/php/conf/:/usr/local/etc/php/conf.d/
environment:
- VIRTUAL_HOST=${VIRTUAL_HOST}
然后,添加我自己的可用网站的Dockerfile
:
FROM php:7.0-apache
ENV TERM=xterm
LABEL maintainer="Derek P Sifford <[email protected]>" \
version="0.15.2-php7.0"
ARG APP_HOST
ENV APP_HOST=$APP_HOST
ADD ./sites/app.conf /etc/apache2/sites-available/app.conf
RUN sed -i 's/ServerName APP_HOST/ServerName '$APP_HOST'/g' /etc/apache2/sites-available/app.conf
RUN sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf \
&& a2enmod rewrite expires \
&& a2dissite 000-default.conf \
&& a2ensite app.conf \
&& service apache2 restart
WORKDIR /app
EXPOSE 80 443
显然网站配置:
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName APP_HOST
SetEnv APPLICATION_ENV "development"
<Directory "/var/www/html">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
如here所示,在警告信息中,您可以在Dockerfile中将ServerName
属性设置为localhost
中的/etc/apache2/apache2.conf
。
我认为您的配置存在问题,因为您将其复制并将其安装在卷上。我认为当容器处于活动状态时,您的配置不应该发展,因此您无需安装它。
因此,尝试从docker-compose.yml中删除此行:
- ./etc/php/conf/:/usr/local/etc/php/conf.d/
在您的apache容器实例上,您应该将IP 172.26.0.2
放在/etc/hosts
中并为其提供完全限定的名称,例如
172.26.0.2 v box.test.com
然后用vbox.test.com替换hostname
要么
把localhost
放在serverName中。
This应该帮助你。