我正在尝试为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/