入口点中的Docker运行脚本

时间:2019-02-08 10:49:26

标签: bash docker dockerfile

在Dockerfile中,我定义了一个入口点

ENTRYPOINT ["sh", "./docker-entrypoint.sh"]

docker-entrypoint.sh中,我想从file.json创建一个文件(template.json),该文件不过是用实际值替换了一些环境变量而已。

#! /bin/bash

eval "echo \"$(<template.json)\"" > file.json; npm start

现在,进入容器后,我看到file.json是空的。但是,如果我在容器内的bash提示符中执行完全相同的命令,则该命令将起作用,并且在file.json中将看到所需的内容。

为什么会这样?

2 个答案:

答案 0 :(得分:5)

问题出在您的口译员上:sh 尝试执行表单:ENTRYPOINT ["/bin/bash", "-c", "./docker-entrypoint.sh"]

答案 1 :(得分:3)

您使用sh

ENTRYPOINT ["sh", "./docker-entrypoint.sh"]

但是在您的入口点文件中,您使用bash

#! /bin/bash

您必须选择