【问题标题】:Docker apache2 will not consider new 000-default.confDocker apache2 不会考虑新的 000-default.conf
【发布时间】:2016-05-27 19:41:18
【问题描述】:

我正在尝试 dockerize Laravel 5.2 应用程序。为此,我使用以下图片,

php:apache
mysql:5.7

下面是我的docker-compose.yml

web:
  build: .
  volumes:
    - ./:/var/www/html
  ports:
    - "9899:80"
  links:
    - db
  command : [/usr/sbin/apache2ctl, -D, FOREGROUND]

db:
  image: mysql:5.7
  volumes:
    - /home/data:/var/lib/mysql
  environment:
    MYSQL_DATABASE: custom
    MYSQL_ROOT_PASSWORD: custom

还有我的Dockerfile

FROM php:apache
RUN apt-get update && docker-php-ext-install pdo pdo_mysql
RUN rm -f /etc/apache2/sites-available/000-default.conf
ADD ./settings/000-default.conf /etc/apache2/sites-available

Dockerfiledocker-compose.yml 都在 laravel 根目录中。要运行基于 laravel 的应用程序,服务器必须指向 public 文件夹。所以,你可以看到我正在用下面的000-default.conf 文件替换apache2 的默认配置文件,

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/public

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

docker-compose up 命令一切正常,但是,当我浏览 localhost:9899 时出现 Forbidden 错误,但 localhost:9899/public 正确启动 laravel 应用程序。这意味着我提供的000-default.conf 没有效果,服务器仍然指向/var/www/html/ 而不是/var/www/html/public

所以我尝试,exec 进入正在运行的容器以检查 000-default.conf。我可以看到我的文件而不是默认文件。我没有解决这个问题。我希望 apache 考虑我的 000-default.conf 。我希望你们能看到我做错了什么。

【问题讨论】:

    标签: php apache docker docker-compose dockerfile


    【解决方案1】:

    Apache 不会查看sites-available 目录,而是查看sites-enabled 目录。 你可以ADD你的配置文件进入后一个目录,或者设置一个符号链接:

    ADD ./settings/000-default.conf /etc/apache2/sites-available
    RUN ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/000-default.conf
    

    【讨论】:

    • 启用站点中的配置文件是指向站点可用文件的符号链接
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 2022-07-01
    • 2022-07-20
    • 2019-10-24
    • 2020-02-26
    相关资源
    最近更新 更多