泊坞窗中“命令”部分的命令不起作用

时间:2018-08-14 09:17:52

标签: docker-compose

我尝试使用php:7.2-apache运行我的(Laravel)代码。由于我们的生产服务器上目前有apache。

但是我需要加载mod_rewrite模块,默认情况下不是这样。

docker-compose.yml

  apache:
    restart: unless-stopped
    image: php:7.2-apache
    container_name: apache_l
    command: bash -c "a2enmod rewrite && service apache2 restart"
    ports:
    - 80:80
    - 443:443
    environment:
      - APACHE_DOCUMENT_ROOT=/var/www/html/public/
    volumes:
    - .:/var/www/html
    - ./docker/php-ini/php.ini:/usr/local/etc/php/php.ini
    - ./docker/sites-enabled:/etc/apache2/sites-enabled/

我按照以下建议编写了命令以启动mod_rewrite: https://github.com/docker-library/php/issues/179

如果我在容器中手动运行这些命令,它将起作用,但是在这样的命令部分中,我会收到错误日志:

  

启用模块重写。

     

要激活新配置,您需要运行:

     

服务apache2重新启动

     

AH00558:apache2:无法可靠地确定服务器的完全状态   限定域名,使用192.168.0.3。设置“服务器名称”   全局指令以禁止显示此消息

     

重新启动Apache httpd Web服务器:apache2。

     

模块重写已启用

     

...

为什么只有手动运行这些命令才能起作用?

奖金问题:(不那么重要) 为什么APACHE_DOCUMENT_ROOT环境变量不起作用。我必须手动更改:/etc/apache2/sites-enabled/内的配置才能使其正常工作,但是变量已被通告。

1 个答案:

答案 0 :(得分:0)

我通过先运行来解决了另一种问题

docker cp apache_l:/etc/apache2/ .\docker\

这会将整个配置目录复制到主机,然后将该目录作为卷安装在 docker-compose.yml

apache:
    restart: unless-stopped
    image: php:7.2-apache
    container_name: apache_l
#    depends_on:
#    - openssl
    ports:
    - 80:80
    - 443:443
    environment:
      - APACHE_DOCUMENT_ROOT=/var/www/html/public/
    volumes:
    - .:/var/www/html
    - ./docker/apache2:/etc/apache2/

我还做了一个从 mods-available / rewrite.load mods-enabled / rewrite.load

的符号链接。