docker - Docker 运行 ENTRYPOINT 不替换环境变量
问题描述
我有一个入口点,如此处所示
ENTRYPOINT /usr/bin/java ... /usr/path/$FILE
我正在尝试在启动容器时传递环境变量
-e FILE=myfile.txt
但是,这个值似乎没有被替换。Java 抛出一个异常,即/usr/path is a directory
. 如果我在 dockerfile 中使用文件名对入口点进行硬编码,则它可以正常工作。
ENTRYPOINT /usr/bin/java ... /usr/path/myfile.txt
它确认 $FILE 未被替换。
如何解决这个问题?
笔记:
有趣的是 docker-compose 工作得很好!!
environment:
- FILE=myfile.txt
解决方案
为了确保您正确使用的shell 形式ENTRYPOINT
确实替换了环境变量$FILE
,请添加exec
:
ENTRYPOINT exec /usr/bin/java ... "/usr/path/$FILE"
然后检查你的docker run -e FILE=xxx yourImage
工作是否有效。
这假设您的 Dockefile 包含一个ENV FILE aDefaultFile
指令,以便docker run -e
工作。
推荐阅读
- python - 按月分组,但只获取 Pandas 列中真实值的总计
- javascript - Discord.js 在特定时间做某事
- javascript - 从单独(不属于我)域上的 iframe 获取 src 属性(视频链接)到我自己的网站(动态)
- swiftui - 根据 SwiftUI 中的内容制作 VStack 高度
- registry - URI 方案映射 - 使用 shell/open/command 时如何将步骤添加到 cd 到某个目录
- node.js - 如何构建 npm 依赖项以在 Dockerfile 中使用?
- json - 删除 UTF-8 Azure 存储 Blob JSON 中的 BOM,留下不可用的 JSON
- python - Selenium problem in VS Code Interactive Mode
- django - Django Rest Framework - Account Verification Email: send_mail() works in console but not using SMTP
- php - PHP 我想将导航栏中的按钮限制为仅限管理员用户