【问题标题】:create a user in postgres docker container在 postgres docker 容器中创建用户
【发布时间】:2017-10-10 14:50:40
【问题描述】:

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

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:my_pass@database/django_db"

    ports:
      - 7445:80

【问题讨论】:

  • 尝试清理/var/lib/postgresql/data目录并重启集群。
  • 您的服务可能同时启动,因此 django 会在 progres 数据库创建用户之前尝试连接。 docs.docker.com/compose/startup-order

标签: django postgresql docker docker-compose


【解决方案1】:

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

我建议你看看cookiecutter-django。您可以在那里找到完整的 docker 设置,包括解决的问题 JodyT 提到在 postgres 容器实际准备好之前启动 Django

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    相关资源
    最近更新 更多