如何在为 docker 群使用 docker-compose .yml 时传递 POSTGRES_USER env 变量
Howto pass POSTGRES_USER env variable when using docker-compose .yml for docker swarm
我正在使用 PostgreSQL 映像启动 docker 集群。
我想在该数据库上创建一个名为 'numbers' 的用户。
这是我的 docker-compose 文件。 .env 文件包含 POSTGRES_USER 和 POSTGRES_PASSORD。如果我通过 ssh 进入托管 postgres 图像的容器,我可以在执行 env
时看到变量。
但是 psql --user numbers
告诉我 角色 "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
当Postgres发现它的数据目录已经被初始化时,他并没有运行初始化脚本。这是支票:
if [ ! -s "$PGDATA/PG_VERSION" ]; then
....
所以我建议您手动创建该用户或从头开始(如果负担得起,请删除您的卷,丢失数据)。来自命令行:
docker volume ls
docker volume rm <id>
我正在使用 PostgreSQL 映像启动 docker 集群。 我想在该数据库上创建一个名为 'numbers' 的用户。
这是我的 docker-compose 文件。 .env 文件包含 POSTGRES_USER 和 POSTGRES_PASSORD。如果我通过 ssh 进入托管 postgres 图像的容器,我可以在执行 env
时看到变量。
但是 psql --user numbers
告诉我 角色 "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
当Postgres发现它的数据目录已经被初始化时,他并没有运行初始化脚本。这是支票:
if [ ! -s "$PGDATA/PG_VERSION" ]; then
....
所以我建议您手动创建该用户或从头开始(如果负担得起,请删除您的卷,丢失数据)。来自命令行:
docker volume ls
docker volume rm <id>