代码之家  ›  专栏  ›  技术社区  ›  online Thomas

docker compose中“命令”部分的命令不起作用

  •  0
  • online Thomas  · 技术社区  · 6 年前

    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/
    

    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 回复  |  直到 6 年前
        1
  •  0
  •   online Thomas    6 年前

    我先跑另一条路把它修好了

    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启用/重写.load