首页 > 解决方案 > 如何从 docker-compose.yml 更改 PHP:7.1-apache 中的文档根目录

问题描述

我正在尝试为 Laravel 设置一个环境,在此过程中,我想将我的文档根目录更改为公用文件夹。我在 Dockerfile 中完成了这项工作,但实际上我更希望它在 docker-compose.yml 文件中。

我觉得我已经从他们的文档中实现了所需的环境命令

我的代码看起来像

码头工人-compose.yml:

version: '3'

services:
    laravel:
        image: php:7.1-apache
        ports:
            - 8080:80
        env_file: ./.env
        environment:
            - "APACHE_DOCUMENT_ROOT=/var/www/html/public"
            - "sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf"
            - "sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf"
        volumes:
            - ./src/:/var/www/html/

.env

APACHE_DOCUMENT_ROOT=/var/www/html/public

我首先尝试不使用 .env 文件,但随后它给了我一个错误,指出未设置 APACHE_DOCUMENT_ROOT 变量。这就是为什么我有外部 .env 文件的原因。

任何人都可以引导我改进这个 yml,所以我的 Apache 有不同的文档根目录吗?

先感谢您。

标签: apachedockerdocker-composeenvironment-variables

解决方案


我找到了解决这个问题的方法。基本上,当我使用构建命令创建 Dockerfile 时,它​​就起作用了。所以下面的结构解决了这个问题:

码头工人-compose.yml

version: '3'
services:
    web:
        build: .
        ports:
            - 80:80
        volumes:
            - ./src:/var/www/html

Dockerfile

FROM php:7.1-apache

ENV APACHE_DOCUMENT_ROOT=/var/www/html/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

请记住在运行映像之前运行docker-compose build(如果其他人有同样的问题)。


推荐阅读