Ich bin neu in Docker und ich möchte meine Django-Website in einem Andock-Container setzen. Ich habe Setup die Behälter wie hier beschrieben: http://michal.karzynski.pl/blog/2015/04/19/packaging-django-applications-as-docker-container-images/Start Postgres Service in Docker Eintrag Skript
Ich habe auch einen Eintrag Skript entryPointScript.sh
genannt, den Folgendes enthält:
#!/bin/bash
service postgresql start
sleep 2s #sleep for two seconds
source /srv/project/EnvProject/bin/activate
python /srv/project/manage.py collectstatic --noinput # Collect static files
python /srv/project/manage.py migrate_schemas # Apply database migrations
# Prepare log files and start outputting logs to stdout
touch /srv/logs/gunicorn.log
touch /srv/logs/access.log
tail -n 0 -f /srv/logs/*.log &
# Start Gunicorn processes
#echo Starting Gunicorn.
# exec gunicorn project.wsgi:application \
# --name project \
# --bind 0.0.0.0:8000 \
# --workers 3 \
# --log-level=info \
# --log-file=/srv/logs/gunicorn.log \
# --access-logfile=/srv/logs/access.log \
# "[email protected]"
#Export Python Path
PYTHONPATH=/srv/project/Envproject/bin
# Start Uwsgi Process
echo Starting Uwsgi
exec uwsgi
--http :8000
--socket 0.0.0.0:8000
--home /srv/project/Envproject/
--chdir /srv/project/project
--wsgi-file /srv/project/project/wsgi.py
--uid root
--pythonpath /srv/project/Envproject/
Allerdings, wenn ich den Behälter mit dem folgenden Befehl starten:
docker run -i -t --entrypoint=/entryPointScript.sh nikssardana/project
Django wirft einen Fehler:
django.db.utils.OperationalError: FATAL: the database system is starting up
Ich denke, der Postgresql-Dienst dauert zu lange, um zu starten. Wie kann ich den Fehler vermeiden?
http://stackoverflow.com/q/35069027/1005215 –
@NehalJWani Ich sah die Antwort dort erwähnt und schrieb ein Skript, das etwas ähnliches wie das Python-Skript in dieser Antwort tut. Immer wenn ich versuche, eine Verbindung zum Server herzustellen, heißt es: "FATAL: Das Datenbanksystem wird gestartet" –
Ich schätze, das Problem ist gelöst. Nach etwa einer Minute wird eine Verbindung zur Datenbank hergestellt. –