apache - 如何从docker-compose.yml中更改PHP :7. 1-apache中的文档根目录

标签 apache docker docker-compose environment-variables

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

我觉得我已经从documentation实现了所需的环境命令

我的代码看起来像

docker-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有一个不同的文档根目录?

先感谢您。

最佳答案

我找到了解决此问题的方法。基本上,当我使用构建命令创建Dockerfile时,它就可以工作。因此,以下结构解决了该问题:

docker-compose.yml

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

Docker文件
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 (如果其他人有相同的问题)。

关于apache - 如何从docker-compose.yml中更改PHP :7. 1-apache中的文档根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51393494/

相关文章:

apache - 是否可以将 Apache Flume 作为守护进程运行?

linux - Docker:您是否尝试连接到没有 TLS 的启用 TLS 的守护进程?

docker - 带有Docker和持久性存储的Elastic Beanstalk

apache - org.apache.karaf.jaas.modules.ldap 无法为 LDAP 设置 SSL 支持

mysql - 如何在一个命令中将 Linux VPS 重置为 0?

docker - 如何永久更新 docker-machine 中的 DOCKER_OPTS

python - 在 Dockerfile 中从源代码安装 python 包

python - django.db.utils.OperationalError : (2005, "Unknown MySQL server host ' db'(-2)")

docker - 容器在docker-compose中无法在网络中通信

Apache Cordova : Difference between browser and www platform