如何在docker swarm

时间:2017-05-26 09:50:29

标签: postgresql docker docker-compose docker-swarm

我正在使用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

1 个答案:

答案 0 :(得分:2)

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

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

因此,我建议您手动创建该用户或从头开始(如果您负担得起,则删除您的卷,丢失数据)。从命令行:

docker volume ls
docker volume rm <id>