我扩展了Wordpress图像以添加XDebug,PHPUnit,composer和phpcs。
我的项目根目录如下所示:
docker -wordpress Dockerfile docker -compose.yml .env
docker-compose.yml:
version: '3.7'
services:
db:
image: mysql:5.7
volumes:
- ./docker-mysql/db_data:/var/lib/mysql
restart: always
ports:
- "3306:3306"
env_file: .env
wordpress:
depends_on:
- db
image: progonkpa/mywordpress
ports:
- "80:80"
- "443:443"
restart: always
volumes:
- ./src:/var/www/html
env_file: .env
volumes:
db_data:
此配置有效,但仅是因为我明确地添加了env_file声明,而我认为如果遵循正确的约定,Docker将自动拾取文件:root中的.env文件。
我实际上想删除docker-compose.yml中的env_file声明,但是随后遇到了一些问题。
MySQL容器日志:
database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD
我似乎在初始化容器时首次运行时,与mysql相关的变量未通过。.env文件包含常用的Wordpress和MySQL变量:
MYSQL_DATABASE=wordpress
MYSQL_USER=wordpress
MYSQL_PASSWORD=wordpress
MYSQL_ROOT_PASSWORD=wordpress
WORDPRESS_DB_HOST=db:3306
WORDPRESS_DB_USER=wordpress
WORDPRESS_DB_PASSWORD=wordpress
那么为什么我的变量没有到达我的容器呢?
您可以在两个地方使用变量:在compose文件本身内部和在所创建的容器内部docker-compose
。
该.env
文件将用于docker-compose
调整docker-compose
命令本身的环境。这对于yaml文件中需要扩展的变量或compose本身使用的变量很有用。有关后者的更多信息,请参见撰写CLI变量docs。
定义env_file
yaml的内部内容将从文件中获取环境变量,并将其注入到容器中。这使它对您的应用程序可见,但是不能用于要docker-compose
扩展的Yaml内部变量,因为该变量扩展发生在env_file
解析内容之前。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句