Ich versuche ECS für den Einsatz mit Travis zu verwenden. An einem Punkt hat alles funktioniert, aber jetzt hat es aufgehört.AWS ECS-Aufgaben starten und stoppen
Ich folge diesem Tutorial https://testdriven.io/part-five-ec2-container-service/
Es gibt zwei Aufgaben, die halten stoppen und starten.
Dies sind die Nachrichten, die ich in Aufgaben zu sehen:
STOPPED (CannotStartContainerError: API error (500): oci ru)
STOPPED (Essential container in task exited)
Dies sind die Nachrichten, die ich in den Protokollen finden Sie unter:
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"
Warum ECS stoppt und so viele neue Aufgaben zu beginnen? Das war vorher nicht passiert.
Dies ist mein docker_deploy.sh von meinem Haupt-Microservice, den ich über travis anrufe.
#!/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
Das ist mein Dockerfile von meinem Benutzer Micro:
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
Ich habe versucht, meine Cluster löschen und meine Aufgaben Deregistrierung und neu zu starten, aber ECS noch kontinuierlich anhält und startet jetzt neue Aufgaben.
Wenn es funktioniert gut: der Unterschied war, dass anstelle die in meinem Dockerfile, ich hatte
RUN python manage.py recreate_db
RUN python manage.py seed_db
CMD gunicorn -b 0.0.0.0:5000 manage:app
travis vorbei ist.
Ich denke, es gibt nicht genug Platz, weil es so viele Aufgaben gestartet und gestoppt hat. –
Aufgaben verbrauchen keinen Speicherplatz; Bilder tun - und es hätte nur einmal das Bild heruntergeladen. –
Aber es funktionierte gut, bevor ich versuchte, die Aktualisierung von Taskdefinitionsrevisionen zu automatisieren. –