我有一个.env
文件和一个docker-compose文件。我使用docker-compose上的env_file
属性引用env文件。然后我使用变量插值来设置另一个环境变量,使用.env文件中定义的变量。出于某种原因,Docker无法识别.env文件中定义的变量。
app.env :
MYSQL_DATABASE=wordpress
DB_USER=root
MYSQL_ROOT_PASSWORD=example
搬运工-compose.yml :
version: '3.1'
services:
wordpress:
container_name: 'wp'
build: .
restart: unless-stopped
links:
- mysql
env_file:
- app.env
environment:
- WORDPRESS_DB_USER=${DB_USER}
- WORDPRESS_DB_PASSWORD=${MYSQL_ROOT_PASSWORD}
- WORDPRESS_DB_NAME=${MYSQL_DATABASE}
ports:
- 80:80
答案 0 :(得分:2)
似乎你混淆了env_file配置选项的含义。它将多个环境变量从外部文件传递到服务的容器。它与environment
相同,但它们是从文件加载的。
如果您想docker compose
识别.env
文件中定义的变量,则该文件应该是.env文件。
实现您的需求:
1。将app.env
重命名为.env
:
mv app.env .env
2。从env_file
删除docker-compose.yaml
配置选项:
version: '3.1'
services:
wordpress:
container_name: 'wp'
build: .
restart: unless-stopped
links:
- mysql
environment:
- WORDPRESS_DB_USER=${DB_USER}
- WORDPRESS_DB_PASSWORD=${MYSQL_ROOT_PASSWORD}
- WORDPRESS_DB_NAME=${MYSQL_DATABASE}
ports:
- 80:80