Docker apache2不会考虑新的000-default.conf

问题描述 投票:0回答:2

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

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

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

<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
时,我收到“禁止”错误,但
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
2个回答
6
投票

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

0
投票

Stack Overflow 太棒了。 7 年过去了,我发现自己正在看这篇文章。

事实证明 php:8.2-apache 的 docker 容器现在包含一个包含的符号链接:

/etc/apache2/sites-enabled/000-default.conf -> ../sites-available/000-default.conf

读完这篇文章后我很困惑,因为我意识到我正在编辑站点可用的conf文件,由于该符号链接,事实证明它是正确的文件。所以我会进一步寻找,因为我还有其他问题:)

与现在相比,我的 dockerfile 看起来像这样:

FROM php:8.2-apache

COPY ./000-default.conf /etc/apache2/sites-available/000-default.conf

或者在 docker-compose.yaml 中,它会是

services:
  web:
    image: php:8.2-apache
    volumes:
      - ./000-default.conf /etc/apache2/sites-enabled/000-default.conf

最后我的公共目录在该conf文件中指定,如下所示:

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/public
    DirectoryIndex index.php
© www.soinside.com 2019 - 2024. All rights reserved.