代码之家  ›  专栏  ›  技术社区  ›  VISHAL DAGA

Docker在entrypoint中运行脚本

  •  3
  • VISHAL DAGA  · 技术社区  · 5 年前

    入口点 :

    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提示符中执行完全相同的命令,它就会工作,并且我会在中看到所需的内容 .

    为什么会有这种行为?

    2 回复  |  直到 5 年前
        1
  •  5
  •   deosha    5 年前

    问题在于您的口译员: sh 试试exec表单: ENTRYPOINT ["/bin/bash", "-c", "./docker-entrypoint.sh"]

        2
  •  3
  •   veben    5 年前

    你用 sh :

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

    bash :

    #! /bin/bash
    

    你必须做出选择