我正在使用PostgreSQL图像启动一个docker swarm。 我想在该数据库上创建一个名为“numbers”的用户。
这是我的docker-compose文件。 .env文件包含POSTGRES_USER和POSTGRES_PASSORD。如果我ssh到托管postgres图像的容器中,我可以在执行env
时看到变量。
但是psql --user numbers
告诉我角色“数字”不存在。
我应该如何传递POSTGRES_ *变量以便创建正确的用户?
version: '3'
services:
postgres:
image: 'postgres:9.5'
env_file:
- ./.env
ports:
- '5432:5432'
volumes:
- 'postgres:/var/lib/postgresql/data'
deploy:
replicas: 1
networks:
- default
restart: always
这会按预期创建postgresql用户。
$ docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_USER=numbers -d postgres
答案 0 :(得分:2)
当Postgres发现其数据目录已经初始化时,他不会运行初始化脚本。这是检查:
if [ ! -s "$PGDATA/PG_VERSION" ]; then
....
因此,我建议您手动创建该用户或从头开始(如果您负担得起,则删除您的卷,丢失数据)。从命令行:
docker volume ls
docker volume rm <id>