You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker的指令字符串中正确使用注入的环境变量

问题原因

你当前使用的是CMD的exec数组语法,该语法默认不会启动shell解释器,因此不会处理$开头的环境变量占位符,只会将$VERSION作为普通字符串传递。

解决方法

你可以选择以下任意一种方式实现环境变量解析:

  • 方法1:改用shell格式的CMD
    直接去掉数组括号,写法如下:
CMD datomic-pro-$VERSION/bin/transactor config/samples/dev-transactor-template.properties

Docker会自动以sh -c的形式执行该命令,环境变量会被正常解析。

  • 方法2:exec格式手动指定shell
    如果你需要保留exec数组写法,手动调用sh执行命令即可:
CMD ["sh", "-c", "datomic-pro-$VERSION/bin/transactor config/samples/dev-transactor-template.properties"]
额外注意事项
  1. 你当前的Dockerfile中没有声明VERSION变量,需要根据使用场景补充声明:
    • 如果版本在构建时确定,可通过ARG参数传入:在Dockerfile合适位置补充ARG VERSION,构建时执行docker build --build-arg VERSION=你的版本号 .即可传入
    • 如果版本需要在容器运行时修改,需要额外将ARG赋值给ENV:补充ENV VERSION=${VERSION},运行时可以通过docker run -e VERSION=你的版本号 镜像名覆盖版本值
  2. 你原Dockerfile的CMD行存在多余的换行和空白字符,调整时记得清理避免执行报错。

内容的提问来源于stack exchange,提问作者zendevil.eth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 06:03:01