如何使用参数创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,并且应该是可执行的。
- 使用docker-compose的Django应用程序将数据保存在媒体卷中
- 从Docker容器A(在Docker容器B上)运行Bash脚本
- Docker存储库的Java库?
- Docker执行命令
- OS X – 如何授予jenkins用户运行docker命令的权限
- Dockerfile Image命令'/ bin / sh -c apt-get install -y mysqld-server'返回一个非零的代码:100
- 使用Marathon json来创build新的实现
- 无法从Docker容器内部连接到Redis
- Docker Alpine image + grpc:警告:使用了不安全的环境读取function'getenv'