gpt4 book ai didi

amazon-web-services - AWS ECS任务不断启动和停止

转载 作者:行者123 更新时间:2023-12-02 21:19:17 31 4
gpt4 key购买 nike

我正在尝试使用ECS与travis进行部署。
某一时刻一切正常,但现在停止了。

我正在关注本教程https://testdriven.io/part-five-ec2-container-service/

有2个任务可以继续停止和启动。

这些是我在任务中看到的消息:

STOPPED (CannotStartContainerError: API error (500): oci ru)

STOPPED (Essential container in task exited)

这些是我在日志中看到的消息:
FATAL: could not write to file "pg_wal/xlogtemp.28": No space left on device

container_linux.go:262: starting container process caused "exec: \"./entrypoint.sh\": permission denied"

为什么ECS停止并启动这么多新任务?这以前没有发生过。

这是我通过travis调用的主要微服务中的docker_deploy.sh。
#!/bin/sh


if [ -z "$TRAVIS_PULL_REQUEST" ] || [ "$TRAVIS_PULL_REQUEST" == "false" ];
then

if [ "$TRAVIS_BRANCH" == "staging" ];
then
JQ="jq --raw-output --exit-status"

configure_aws_cli() {
aws --version
aws configure set default.region us-east-1
aws configure set default.output json
echo "AWS Configured!"
}

make_task_def() {
task_template=$(cat ecs_taskdefinition.json)
task_def=$(printf "$task_template" $AWS_ACCOUNT_ID $AWS_ACCOUNT_ID)
echo "$task_def"
}

register_definition() {
if revision=$(aws ecs register-task-definition --cli-input-json "$task_def" --family $family | $JQ '.taskDefinition.taskDefinitionArn');
then
echo "Revision: $revision"
else
echo "Failed to register task definition"
return 1
fi
}

deploy_cluster() {

family="testdriven-staging"
cluster="ezasdf-staging"
service="ezasdf-staging"

make_task_def
register_definition

if [[ $(aws ecs update-service --cluster $cluster --service $service --task-definition $revision | $JQ '.service.taskDefinition') != $revision ]];
then
echo "Error updating service."
return 1
fi

}

configure_aws_cli
deploy_cluster

fi
fi

这是来自我的用户微服务的Dockerfile:
FROM python:3.6.2

# install environment dependencies
RUN apt-get update -yqq \
&& apt-get install -yqq --no-install-recommends \
netcat \
&& apt-get -q clean

# set working directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# add requirements (to leverage Docker cache)
ADD ./requirements.txt /usr/src/app/requirements.txt

# install requirements
RUN pip install -r requirements.txt

# add entrypoint.sh
ADD ./entrypoint.sh /usr/src/app/entrypoint.sh
RUN chmod +x /usr/src/app/entrypoint.sh

# add app
ADD . /usr/src/app

# run server
CMD ["./entrypoint.sh"]

entrypoint.sh:
#!/bin/sh


echo "Waiting for postgres..."

while ! nc -z users-db 5432;
do
sleep 0.1
done

echo "PostgreSQL started"

python manage.py recreate_db
python manage.py seed_db
gunicorn -b 0.0.0.0:5000 manage:app

我尝试删除群集并注销我的任务并重新启动,但是ECS仍在继续停止并立即启动新任务。

当它运行良好时:区别是,我没有在Dockerfile中使用 CMD ["./entrypoint.sh"]
RUN python manage.py recreate_db
RUN python manage.py seed_db
CMD gunicorn -b 0.0.0.0:5000 manage:app

特拉维斯过去了。

最佳答案

错误就在那里。

您的主机空间不足;并且entrypoint.sh文件被拒绝。

确保主机有足够的磁盘空间(Shell in和df -h可以检查和扩展卷,或者仅提供一个具有更多空间的新实例),并且对于entrypoint.sh,请确保在构建镜像时该文件是可执行的chmod +x并且用户可读容器正在运行。

首先在本地测试您的容器;第二个错误应该在开发中立即被发现。

关于amazon-web-services - AWS ECS任务不断启动和停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47717694/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com