travis를 사용하여 배포 할 때 ECS를 사용하려고합니다. 한순간에 모든 것이 작동했지만 이제는 중단되었습니다.AWS ECS 작업이 계속 시작되고 중지됨
나는이 튜토리얼 https://testdriven.io/part-five-ec2-container-service/
에게 다음하고 중지하고 시작 계속이 작업이 있습니다.
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 중지 한 많은 새로운 작업을 시작 :
STOPPED (CannotStartContainerError: API error (500): oci ru)
STOPPED (Essential container in task exited)
이 내가 로그에서 볼 수있는 메시지는 다음과 같습니다
이 내가 작업에서 볼 수있는 메시지는? 전에는 그런 일이 없었습니다.
이것은 내 트래커를 통해 호출하는 주 마이크로 서비스의 docker_deploy.sh입니다.
이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는 여전히 계속 중지
#!/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 내 사용자 microservice에서입니다 이제 새로운 작업을 시작합니다.
그것은 잘 작동 때 : 차이가 대신 내 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
트래비스가 통과했다이었다.
너무 많은 작업을 시작하고 중지했기 때문에 충분한 공간이 없다고 생각합니다. –
작업은 공간을 소비하지 않습니다. 이미지는 한 번만 이미지를 다운로드했을 것입니다. –
하지만 작업 정의 개정의 자동화를 시도하기 전에 제대로 작동했습니다. –