在postgres docker容器中创建用户
问题描述:
我想在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
答
从你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这本书的作者,这也值得一读。
尝试清理'/ var/lib/postgresql/data'目录并重新启动群集。 –
您的服务可能会同时启动,因此django会在progres数据库创建用户之前尝试连接。 https://docs.docker.com/compose/startup-order/ – JodyT