【发布时间】:2017-11-30 14:35:01
【问题描述】:
我有一个 Web 应用程序,我想在 Docker 上运行以进行测试。 应用程序使用数据库作为存储,并且数据库的配置保存在环境变量 (JSON) 中。 您可以在下面看到我的 Dockerfile 中的 env 变量定义(另请参阅下面的方法)
ENV CONFIG '{ \
"credentials":{ \
"hostname": "172.17.0.5", \
"password": "PWD", \
"port": "1234", \
"username": "${USER}" \
}, \
"name":"database", \
"tags":[] \
}, \
...
如果我对数据库的所有参数进行硬编码,一切正常,但我不想仅仅因为数据库的 IP 地址已更改而更改我的 Dockerfile。
因此我想使用 Docker build-args。
我已经尝试了两种方法:
- 直接引用变量(见“${USER}”行)
- 用下面的命令
RUN CONFIG=$(echo $CONFIG | sed 's/PWD/'$db_pwd'/g')替换像“PWD”这样的占位符
第一种方法不会导致替换,因此 ${USER} 是 ${USER}。第二种方法似乎有效(至少在终端中),但变量赋值似乎不起作用。
你知道我怎样才能完成这项工作吗?随意提出其他方法。我只是不想在我的 Dockerfile 中有硬编码的参数。
谢谢!
【问题讨论】:
标签: bash docker sed terminal dockerfile