首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令不从停靠区的“命令”部分开始工作

命令不从停靠区的“命令”部分开始工作
EN

Stack Overflow用户
提问于 2018-08-14 09:17:51
回答 1查看 366关注 0票数 0

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

但是,我需要加载模块mod_rewrite,这对我来说不是默认情况。

docker-compose.yml

代码语言:javascript
复制
  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可靠地确定服务器的完全限定域名。全局设置“ServerName”指令以抑制此消息 重新启动apache2服务器:apache2。 模块重写已启用 ..。

为什么它只在手动运行这些命令时才起作用?

额外的问题:(不重要)为什么APACHE_DOCUMENT_ROOT环境变量不能工作。我必须手动更改:/etc/apache2/sites-enabled/内部的配置,这样它才能正常工作,但是这个变量是广告中的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-14 15:18:46

我第一次跑就把它修好了

代码语言:javascript
复制
docker cp apache_l:/etc/apache2/ .\docker\

将整个配置目录复制到主机,然后将该目录作为卷挂载到docker-compose.yml中。

代码语言:javascript
复制
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.loadmods-enabled/rewrite.load的符号链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51837916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档