在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
中将看到所需的内容。
为什么会这样?
答案 0 :(得分:5)
问题出在您的口译员上:sh
尝试执行表单:ENTRYPOINT ["/bin/bash", "-c", "./docker-entrypoint.sh"]
答案 1 :(得分:3)
您使用sh
:
ENTRYPOINT ["sh", "./docker-entrypoint.sh"]
但是在您的入口点文件中,您使用bash
:
#! /bin/bash
您必须选择