如何在Docker群组中使用docker-compose .yml时传递POSTGRES_USER envvariables

我正在创build一个PostgreSQL镜像的Docker群。 我想在该数据库上创build一个名为“数字”的用户。

这是我的docker-compose文件。 .env文件包含POSTGRES_USER和POSTGRES_PASSORD。 如果我ssh进入托pipepostgres图像的容器,我可以看到执行env时的variables。 但psql --user numbers告诉我, angular色“数字”不存在。

我应该如何通过POSTGRES_ *variables,以便创build正确的用户?

 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 

这将按预期创buildpostgresql用户。

  $ docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_USER=numbers -d postgres 

当Postgres发现它的数据目录已经被初始化时,他不会运行初始化脚本。 这是检查:

 if [ ! -s "$PGDATA/PG_VERSION" ]; then .... 

因此,我build议您手动创build该用户或从头开始(如果您可以负担得起的话,请移除您的音量,丢失数据)。 从命令行:

 docker volume ls docker volume rm <id>