我正在通过 Docker 和 ECS Fargate 构建和部署应用程序。我在 ECS 任务定义中定义了我的入口点命令。将映像推送到私有 ECR 存储库后,当 ECS Fargate 尝试部署 docker 映像时出现此错误。任何意见将是有益的。下面是 dockerfile、任务定义和错误。
Dockerfile
FROM centos:7
COPY /src/main/build/application.zip /tmp/application.zip
COPY /src/main/residual-container-setup/application/init.sh /tmp/init.sh
#Environment variables and Entry point being defined via task definition
任务定义
{
"containerDefinitions": [
{
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/application",
"awslogs-region": "us-east-2",
"awslogs-stream-prefix": "ecs"
}
},
"entryPoint": [
"[\"/bin/sh -c\"",
"\"/tmp/init.sh\"]"
],
"portMappings": [
{
"hostPort": 9003,
"protocol": "tcp",
"containerPort": 9003
}
],
"cpu": 0,
"environment": [
{
"name": "HOST",
"value": "dev.application.com"
},
{
"name": "REST_PORT",
"value": "8003"
}
],
"mountPoints": [],
"volumesFrom": [],
"image": "xxxxxxxxxxxx.dkr.ecr.us-east-2.amazonaws.com/application:latest",
"essential": true,
"name": "application"
}
]
错误
container_linux.go:380: starting container process caused: exec: "[\"/bin/sh -c\"": stat ["/bin/sh -c": no such file or directory
我尝试使用以下命令在本地运行容器:`docker run -it $docker_image /bin/sh
我什至无法执行到容器中。我相信我可能需要在图像中额外安装才能使其正常工作。任何意见将是有益的。
更新
我已经更新了 dockerfile 以使用以下命令更新 init 脚本的权限:chmod +x /tmp/init.sh
我还将任务定义入口点属性更新为["/bin/sh", "-c", "/tmp/init.sh"]
进行这些更改后,我现在看到以下内容:
container_linux.go:380: starting container process caused: exec: "-c": executable file not found in $PATH