"sh: 1: ./binary: Permission denied" 在弹性容器服务上

"sh: 1: ./binary: Permission denied" on Elastic Container Service

完全想不通。我的 Dockerfile 在本地和 EC2 Linux 服务器上运行良好,但在使用 Fargate 的 ECS 上,它在尝试 运行 我的二进制文件时总是会出现标题中显示的错误。

Docker 文件:

FROM ubuntu:latest

WORKDIR /usr/app

# install TLS certificates
RUN apt-get update && apt-get install ca-certificates -y

# copy binary file
COPY ./binary ./binary

# run executable on start
ENTRYPOINT chmod +x ./binary && ./binary

尝试了多种组合,弄乱了容器定义设置(入口点、命令等),但每次仍然出现相同的错误。想知道是否有人遇到过这个问题以及您是如何修复它的,或者是否有人可以提供一个在 ECS 上运行的示例 Dockerfile。

如果重要的话,有问题的二进制文件是为 Linux (amd64) 构建的 Go 二进制文件。

原来ECS不知何故自己做了一个目录,绝对不是我的Dockerfile。用 CMD ["/bin/bash", "-c", "chmod +x /usr/app/binary/binary && /usr/app/binary/binary"] 替换我的 ENTRYPOINT 解决了这个问题(/usr/app 是工作目录。)