Tag: sed

Dockerfile:如何用build-arg的replace环境variables中的占位符?

我有一个Web应用程序,我想运行在Docker上进行testing。 应用程序使用数据库作为存储,数据库的configuration保存在环境variables(JSON)中。 下面你可以看到我的Dockerfile中的envvariables定义(另请参见我的方法) ENV CONFIG '{ \ "credentials":{ \ "hostname": "172.17.0.5", \ "password": "PWD", \ "port": "1234", \ "username": "${USER}" \ }, \ "name":"database", \ "tags":[] \ }, \ … 如果我硬编码数据库的所有参数一切正常,但我不想只改变我的Dockerfile,因为数据库的IP地址已经改变。 因此我想使用Docker构build参数。 我已经尝试了两种方法: 直接引用variables(见“$ {USER}”一行) 使用以下命令replace“PWD”的占位符RUN CONFIG=$(echo $CONFIG | sed 's/PWD/'$db_pwd'/g') 第一种方法不会导致replace,因此$ {USER}是$ {USER}。 第二种方法似乎工作(至less在terminal),但似乎variables分配不起作用。 你有什么想法我可以做这个工作? 随意build议其他方法。 我只是不想在我的Dockerfile中有硬编码参数。 谢谢!