作者:laosiji | 来源:互联网 | 2022-12-10 13:00
我正在尝试为Laravel建立环境,在此过程中,我想将文档根目录更改为公用文件夹。我在Dockerfile中完成了这项工作,但实际上,我更希望在docker-compose.yml文件中进行此项工作。
我觉得我已经从他们的文档中实现了所需的环境命令
我的代码看起来像
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有一个不同的文档根目录?
先感谢您。
1> kjc..:
我找到了解决此问题的方法。基本上,当我使用构建命令创建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(如果其他人有相同的问题)。