AWS Elastic Beanstalk中的Docker:在$ PATH中找不到可执行文件“

我想在Elastic Beanstalk上部署一个多容器的Docker应用程序。

其中一个容器是一个芹菜容器,我有一个worker.sh脚本启动芹菜工人。 此容器的Dockerrun.aws.json如下所示:

 { "name": "celery", "image": "python:2", "memory": 384, "user": "nobody", "command": ["worker.sh"], "essential": true, "links": [ "redis" ], "mountPoints": [ { "containerPath": "/app", "sourceVolume": "_" } ] } 

但是,我得到这个错误:

 oci runtime error: container_linux.go:247: starting container process caused "exec: \"worker.sh\": executable file not found in $PATH" 

请记住,我已经尝试了没有括号的命令:

 "command": "worker.sh", 

但是我得到了同样的错误信息。

如何修改我的Dockerrun.aws.json文件来运行这个脚本?

问题是"command": ["worker.sh"] ,你需要提供脚本worker.shfull path

像下面的例子一样,错误的Dockerfile

 FROM alpine:3.3 ADD worker.sh /root/ CMD ["worker.sh"] 

如果我docker build -t worker-test .docker run worker-test ,我会得到:

container_linux.go:247:启动容器进程导致“exec:\”worker.sh \“:在$ PATH中找不到可执行文件”

docker:来自守护进程的错误响应:oci运行时错误:container_linux.go:247:启动容器进程导致“exec:\”worker.sh \“:在$ PATH中找不到可执行文件”。

ERRO [0001]从守护进程获取事件错误:net / http:请求取消

但是,如果我将Dockerfile更改为:

 FROM alpine:3.3 ADD worker.sh /root/ CMD ["/root/worker.sh"] 

再做一遍,我会得到正确的输出。 顺便说一句,记得添加executable权限的脚本。