AWS ECS Docker:未指向 Drupal 路径并给出错误您无权访问此资源

AWS ECS Docker: Not pointing to Drupal path and giving error You don't have permission to access this resource

Drupal 8 目录结构如下

drupal -> Web -> Index.php

我有以下文件

docker-compose.yml

version: '3'
services:
  drupal:
    image: drupal:latest
    container_name: drupal
    build: .
    ports:
      - "8081:80"
    volumes:
      - ./:/var/www
    restart: always

DockerFile

FROM drupal:8.6-apache

RUN apt-get update && apt-get install -y \
    curl \
    git \
    mysql-client \
    vim \
    wget

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
    php composer-setup.php && \
    mv composer.phar /usr/local/bin/composer && \
    php -r "unlink('composer-setup.php');"

RUN wget -O drush.phar https://github.com/drush-ops/drush-launcher/releases/download/0.4.2/drush.phar && \
    chmod +x drush.phar && \
    mv drush.phar /usr/local/bin/drush

COPY apache-drupal.conf /etc/apache2/sites-enabled/000-default.conf

WORKDIR /var/www/web

apache-drupal.conf

<VirtualHost *:80>
    DocumentRoot "/var/www/web/"
    DirectoryIndex index.php

    <Directory "/var/www/web/">
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /var/www/web/error.log
    CustomLog /var/www/web/access.log combined
</VirtualHost>

当我通过 Public IP 访问 Drupal 集群时,它只会显示 error.log & access.log 文件。不是 Drupal 整个项目。

路径中缺少什么?

看来你遇到了某种碰撞。

  • 您的 drupal:8.6-apache 图像在 /var/www/html 文件夹中包含 Drupal,但您将卷映射到容器内的 /var/www/ 文件夹。这完全打破了它。
  • 您的 apache-drupal.conf 文件指向 /var/www/web,但项目已经在 html 中(我们在容器中)

使其工作的简单方法是执行 3 次修改(如果仅获取映射日志就足够了)

  1. docker-compose.yml 中的卷映射更改为 /var/www/web
  2. apache-drupal.conf中的DocumentRootDirectory改为/var/www/html/