2017-10-10 9 views
0

dockerコンテナにdjangoアプリケーションを作成しようとしていますが、djangoが使用するpostgresコンテナにユーザを作成する方法がわかりません。私はそれが(docker-compose up --build --force-recreateによって)それを始めるときdatabase_1 | FATAL: role "my_user" does not existを私に伝える理由であることを推測する。 私は何が間違っていますか?あなたのdocker-compose.ymlからpostgres dockerコンテナでユーザを作成する

version: "3.1" 
services: 

    database: 
    image: postgres:9.5 
    environment: 
     POSTGRES_DB: "django_db" 
     POSTGRES_USER: "my_user" 
     POSTGRES_PASSWORD: "my_password" 
     POSTGRES_DATA: /var/lib/postgresql/data/pgdata 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "3" 
    restart: always 
    volumes: 
     - "database:/var/lib/postgresql/data" 
    tmpfs: 
     - "/tmp" 
     - "/run" 
    networks: 
     db-net: 

    django: 
    build: ./ 
    image: django:latest 
    environment: 
     DATABASE_URL: "postgres://my_user:[email protected]/django_db" 

    ports: 
     - 7445:80 
+0

'/ var/lib/postgresql/data'ディレクトリを消去してクラスタを再起動してみてください。 –

+0

あなたのサービスが同時に起動している可能性があります。そのため、djangoは、progresデータベースがユーザを作成する前に接続しようとします。 https://docs.docker.com/compose/startup-order/ – JodyT

答えて

1

私はあなたが成功し、データベース内のユーザーmy_userを作成していると言うでしょう:

docker-compose.yamlは今のように見えます。ホスト上でdocker exec -ti project_database_1 psql -U my_user -d django_dbを実行することで確認できます。

cookiecutter-djangoをご覧ください。 postgresコンテナが実際に準備が整う前に、JodyTという問題が記載されていて、Djangoが始まると述べたドッカーの完全なセットアップが見つかります。

書籍の著者two scopes of djangoからも読んだことがあります。

関連する問題