docker-compose - Docker-compose .env 文件内部变量替换
问题描述
我正在尝试在.env
文件中执行变量替换,但到目前为止还没有任何运气。
我一直在查看 docker-compose 文档,但没有找到任何提及这一点的内容(或任何在线示例),但如果不可能的话,这似乎会令人惊讶。
我在说的是在我的 .env 文件中做这样的事情:
// .env
SOME_LOCATION=/path/to/some/location
CONFIG_FILE=${SOME_LOCATION}/config
CONSTANT_FILE=${SOME_LOCATION}/constants
(这个例子CONFIG_FILE
等于字符串$${SOME_LOCATION}/config
,同样的事情发生在CONSTANT_FILE
)
我意识到这可以在compose.yml
文件内部使用这样的语法,但可以在.env
文件内部完成吗?
如果不可能,我正在使用 docker-compose 版本 1.24.1,那么我只会复制这些类型的东西,但是通过您的配置复制相同的值总是感觉很脏。
解决方案
您可以在 shell 脚本中使用export命令更改或添加 .env 变量。
像这样的文件路径;
-project
-> docker-compose.yml
-> .env
-> start.sh
码头工人-compose.yml
services:
jira:
image: atlassian/jira-software
volumes:
- ${CONFIG_FILE}:/var/atlassian/application-data/jira
ports:
- 8080:8080
volumes:
jira_vol:
external: false
启动.sh
export "CONFIG_FILE=${SOME_LOCATION}/jira_vol"
docker-compose up -d
.env
SOME_LOCATION=./volumes
最后运行这个命令;
sh start.sh
start.sh 文件将添加 CONFIG_FILE 变量并运行 docker compose。您可以在 docker -compose.yml中使用 CONFIG_FILE 和SOME_LOCATION 。
推荐阅读
- c# - 创建自定义可序列化值类型
- sql-server - 如何使用 SQL Server 从数据库中获取具有列的表的特定列中的所有表名和不同值
- palantir-foundry - 为什么我不应该在我的 Python 转换中使用 collect()?
- spring-boot - 在不启动服务器的情况下使用 Spring 应用程序属性
- apache-nifi - 如何在 NiFi 处理器中重新加载外部配置数据
- php - 上传图片或创建新帖子时,Wordpress 中的 net::ERR_CONNECTION_RESET
- cllocationmanager - iOS 14 - 当精确位置权限被拒绝时,如何让 iBeacon 唤醒应用程序?
- php - 指示作曲家在模棱两可时使用不同的类
- python - 您如何重新组织数据框的数据框,以便只有 1 个最终数据框?
- javascript - JS getElementsByName 以部分 id 作为变量