Sut*_*ala 4 environment-variables docker docker-compose
我有一个.env文件和一个 docker-compose 文件。我使用env_filedocker-compose 上的属性引用了 env 文件。然后我使用变量插值来使用 .env 文件中定义的变量设置另一个环境变量。出于某种原因,Docker 无法识别 .env 文件中定义的变量。
app.env :
MYSQL_DATABASE=wordpress
DB_USER=root
MYSQL_ROOT_PASSWORD=example
Run Code Online (Sandbox Code Playgroud)
docker-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
Run Code Online (Sandbox Code Playgroud)
看来您混淆了env_file配置选项的含义。它将多个环境变量从外部文件传递到服务的容器。它与 相同environment,但它们是从文件加载的。
如果你想docker compose识别.env文件中定义的变量,它应该是.env文件。
为了实现你想要的,你需要:
1.重命名app.env为.env:
mv app.env .env
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2581 次 |
| 最近记录: |