docker - Docker compose env 变量未替换
问题描述
我有这样的 docker-compose 设置
码头工人-compose.yml
version: '3.9'
services:
busybox:
image: busybox:latest
environment:
- DB_HOST=${DB_HOST}
env_file:
- test.properties
测试属性
DB_URL=jdbc://mysql://${DB_HOST}:app_db
.env
DB_HOST=localhost
当我运行 docker-compose config 命令时,输出是这样的,
services:
busybox:
environment:
DB_HOST: localhost
DB_URL: jdbc://mysql://:app_db
image: busybox:latest
version: '3.9'
如您所见,环境变量 DB_HOST 在 .env 文件中定义为“localhost”,但该变量在环境变量“DB_HOST”中由 docker-compose 设置为“”,并显示为jdbc://mysql://:app_db
. 但我想要这样的 DB_HOST 值DB_HOST: jdbc://mysql://localhost:app_db
。我怎么能做到这一点?
我的 docker 和 docker-compose 版本看起来像这样
> docker -v
Docker version 20.10.5, build 55c4c88
> docker-compose version
docker-compose version 1.28.5, build c4eb3a1f
docker-py version: 4.4.4
CPython version: 3.9.0
OpenSSL version: OpenSSL 1.1.1h 22 Sep 2020
antonio-petricca建议的解决方法是有效的,但我想知道是否有人在运行 docker-compose 之前在不设置 env 变量的情况下解决了这个问题?这曾经在较早版本的 docker-compose 上工作,但随着一些更新,它停止工作。我不确定它在哪个 docker-compose 版本上损坏。
解决方案
前段时间我遇到了同样的问题,解决方法是:
#!/bin/bash
DB_HOST=localhost
DB_HOST=${DB_HOST} docker-compose # ... command arguments ...
您可以对其他变量重复相同的操作。
告诉我这是否适合你。
问候。
推荐阅读
- javascript - 获取错误在控制台中提供了比在 catch 方法中更多的错误信息
- javascript - 使用钩子(setState,useEffect)从屏幕中提取重复代码的最佳方法?
- scala - 通过 slick codegen 导入从另一个项目构建的依赖项时,“对象不是包的成员”
- python - 如何在 pytest 会话结束时清理资源?
- sql - 为什么我的 WHERE 子句会影响我的 LEFT JOIN?
- ios - 如何在加载应用程序和完全加载网页视图页面之前直接添加启动画面图像?
- sql - 改进从 COBOL 文件到 SQL 的 ETL
- java - 将整个where子句传递给原生spring jpa @Query
- c# - 如何在 Realm 对象上设置 IList 属性
- graphql - 无法解决 Playground 错误:未提供所需类型 \"MemberInput!\" 的变量 \"$input\"