Sou*_*uad 3 python amazon-web-services docker aws-batch
我构建了一个 AWS Batch 计算环境。我想在作业中运行一个 python 脚本。这是我正在使用的 docker 文件:
FROM python:slim
RUN apt-get update
RUN pip install boto3 matplotlib awscli
COPY runscript.py /
ENTRYPOINT ["/bin/bash"]
Run Code Online (Sandbox Code Playgroud)
我的任务定义中的命令是:
python /runscript.py
Run Code Online (Sandbox Code Playgroud)
当我在 AWS 控制台中提交作业时,我在 CloudWatch 中收到此错误:
/usr/local/bin/python: /usr/local/bin/python: cannot execute binary file
Run Code Online (Sandbox Code Playgroud)
并且该作业的状态为 FAILED。
出了什么问题?我在本地运行容器,并且可以毫无错误地启动脚本。
删除你的ENTRYPOINT行。但是将其替换为CMD说明容器实际在做什么的 。
Docker 容器运行的主要命令有两个部分,ENTRYPOINT以及CMD;当容器启动时,这些被组合成一个命令。您的容器正在运行的命令可能类似于
/bin/bash python /runscript.py
Run Code Online (Sandbox Code Playgroud)
所以在它的(成功)中bash找到 a ,并尝试将它作为 shell 脚本运行(导致该错误)。python$PATH
您并不严格需要ENTRYPOINT,而这会带来麻烦。相反,您通常希望容器做一件事,所以您应该只在 Dockerfile 中指定它。
# No ENTRYPOINT
CMD ["python", "/runscript.py"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2564 次 |
| 最近记录: |