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.sh
的full 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
权限的脚本。
- 如何在http nginx dockerpopup的beanstalk中将httpredirect到https
- 在AWS EBS microservice docker环境中使用Kafka,以避免丢失用户请求并处理更多并发点击
- 在AWS上监控和扩展基于Docker的Celery工作者群集
- replaceAWS Elastic BeanStalk上的特定实例?
- Elastic Beanstalk泊坞窗错误
- dockerbuild设失败 – “无法分配内存”
- Go和Docker:当我使用stdlib时,我能够运行一个去web服务器,当我使用自定义包发生错误
- EB:从Docker Hub自动部署新的Docker镜像
- Elastic Beanstalk和Dockerfile ARG指令