apache - 如何从 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 有不同的文档根目录吗?
先感谢您。
解决方案
我找到了解决这个问题的方法。基本上,当我使用构建命令创建 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(如果其他人有同样的问题)。
推荐阅读
- c# - 如何动态指定实体以使用 EntityFramework 检索数据?
- c# - 如何检查数据库中是否存在数据并显示错误
- python - 树莓派连接到 Firebase
- html - 如何在 Bootstrap 导航栏品牌文本下放置字幕
- mysql - 嵌套选择查询更高效
- python - 来自源代码的 TensorFlow 的工作速度比从 pip 安装的版本慢
- java - 在 Java 中清除 Artemis ActiveMQServer 队列
- node.js - 链码查询不同通道上的链码
- c# - 导致“InvalidCastExceptions”的多个异步 Cosmos DB 查询
- node.js - MONGODB_URI 未定义