我遇到了这个问题真的很头疼,几乎把我的头发拉起来,但仍然无法解决。我希望 docker image 在我启动时自动启动,所以我开始使用入口点,但总是失败。
这是我通常用来启动我的应用程序的命令:
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"]
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
docker: Error response from daemon: oci runtime error: exec: "start.sh": executable file not found in $PATH.
Run Code Online (Sandbox Code Playgroud)
但是如果我改成绝对路径:
入口点 ["/opt/ngcsc/start.sh","-l","kubstaging","-ssl", "false", "-srv", "api"]
在我运行 docker run image 之后
我有:
standard_init_linux.go:175: exec user process caused "exec format error"
Run Code Online (Sandbox Code Playgroud)
这真的是一个大问题,我用谷歌搜索了很多,没有任何效果。你能帮我告诉我该怎么做吗?
谢谢
Unix 正在寻找可执行的二进制文件来执行,而不是 shell 脚本。要运行 shell 脚本,请使用适当的 shell 调用它,例如:
ENTRYPOINT ["/bin/sh", "-c", "/opt/ngcsc/start.sh","-l","kubstaging","-ssl", "false", "-srv", "api"]
Run Code Online (Sandbox Code Playgroud)
请注意,这不会使 docker 在主机重新启动时自动启动容器。为此,您需要将--restart
标志打开docker run
,例如:
docker run --restart=unless-stopped -itd your_image
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18737 次 |
最近记录: |