如何使用参数创builddocker入口点

在这个问题上,我遇到了一个非常头痛的问题,几乎把我的头发拉上来,仍然无法解决。 我希望docker映像每当我启动时自动启动,所以我来到使用入口点,但总是失败。

这是我通常用来启动我的应用程序的命令:

cd / opt / path ./start.sh -l dev -ssl false -srv api

我现在想在Docker开始时自动运行这个命令。

我在docker文件中使用了这个:

WORKDIR /opt/ngcsc ENTRYPOINT ["start.sh","-l","kubstaging","-ssl", "false", "-srv", "api"] 

我得到这个错误:

 docker: Error response from daemon: oci runtime error: exec: "start.sh": executable file not found in $PATH. 

但是,如果我改变到绝对path:

ENTRYPOINT [“/opt/ngcsc/start.sh","-l","kubstaging","-ssl”,“false”,“-srv”,“api”]

运行docker运行映像后

我有:

 standard_init_linux.go:175: exec user process caused "exec format error" 

这真是一个大问题,我GOOGLE了很多,没有任何工作。 你能帮我告诉我该怎么做吗?

谢谢

Unix正在寻找可执行的二进制文件来执行,而不是一个shell脚本。 要运行shell脚本,请使用适当的shell调用它,例如:

 ENTRYPOINT ["/bin/sh", "-c", "/opt/ngcsc/start.sh","-l","kubstaging","-ssl", "false", "-srv", "api"] 

请注意,这不会使主机重新启动时自动启动您的容器。 为此,您需要--restart docker run--restart标志,例如:

 docker run --restart=unless-stopped -itd your_image 

如何将命令input到文件并使用CMD运行该文件? 例如:

 # start.sh cd /opt/path ./start.sh -l dev -ssl false -srv api # Dockerfile # ... other commands COPY start.sh /usr/local/bin/start/sh CMD start.sh 

start.sh应该与Dockerfile处于相同的path,并且应该是可执行的。