Apache无法确定docker容器上的servername

问题描述 投票:1回答:3

我正在尝试为现有站点设置自定义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>
apache docker docker-compose
3个回答
1
投票

here所示,在警告信息中,您可以在Dockerfile中将ServerName属性设置为localhost中的/etc/apache2/apache2.conf


0
投票

我认为您的配置存在问题,因为您将其复制并将其安装在卷上。我认为当容器处于活动状态时,您的配置不应该发展,因此您无需安装它。

因此,尝试从docker-compose.yml中删除此行:

- ./etc/php/conf/:/usr/local/etc/php/conf.d/

0
投票

在您的apache容器实例上,您应该将IP 172.26.0.2放在/etc/hosts中并为其提供完全限定的名称,例如

172.26.0.2 v box.test.com

然后用vbox.test.com替换hostname

要么

localhost放在serverName中。

This应该帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.