2017-02-11 7 views
0

私はドッカーには新しく、私はドッカーコンテナーの中に私のdjangoウェブサイトを入れたいと思っています。ドッカーエントリースクリプトでpostgresサービスを開始する

:私は、次のコマンドを使用してコンテナを起動したときに、しかし



    #!/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/ 

:私はまた、次のものが含まれentryPointScript.shという名前のエントリスクリプトを作成し http://michal.karzynski.pl/blog/2015/04/19/packaging-django-applications-as-docker-container-images/

:私は、セットアップの容器を、ここで説明したように持っています

django.db.utils.OperationalError: FATAL: the database system is starting up 
docker run -i -t --entrypoint=/entryPointScript.sh nikssardana/project

Djangoはエラーをスローします

私はpostgresqlサービスが開始するには時間がかかりすぎると思います。エラーを回避するにはどうすればよいですか?

+0

http://stackoverflow.com/q/35069027/1005215 –

+0

@NehalJWani私はそこに述べた答えを見て、その答えのpythonスクリプトに似た何かをするスクリプトを書いた。サーバーに接続しようとすると、「致命的:データベースシステムが起動しています」 –

+0

問題が解決したと思います。 1分ほど待ってからデータベースに接続します。 –

答えて

0

私は、PostgreSQLサーバが動作しているかどうかを確認するには、次のスクリプトを書いたか

 
#Check if postgres is running or not 
    import psycopg2 
    import time 

    while True: 
     try: 
      conn = psycopg2.connect("dbname='wottaspace' user='root' host='localhost' password='root'") 
      print 'connected' 
      break 
     except Exception as ex: 
      print ex 
      time.sleep(0.5) 

 

そして、このスクリプトの代わりに、sleep 2s声明が含まれています。問題が解決しました!

関連する問題