2017-10-10 452 views
0

我想在docker容器中创建一个django应用程序,但我不知道如何在django使用的postgres容器中创建用户。我想这就是为什么当我开始它(通过docker-compose up --build --force-recreate)它告诉我database_1 | FATAL: role "my_user" does not exist。 我在做什么错?在postgres docker容器中创建用户

docker-compose.yaml现在的样子:

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

从你docker-compose.yml我要说的是,你已经成功创建了用户my_user在数据库中。您可以通过在主机上运行docker exec -ti project_database_1 psql -U my_user -d django_db来验证。

我建议你看看cookiecutter-django。您可以在那里找到一个完整的码头安装程序,其中包括解决的问题JodyT,在postgres容器实际准备好之前提到有关启动Django

它来自two scopes of django这本书的作者,这也值得一读。

相关问题