PostgreSQL和Docker Compose:无法创建自定义角色和数据库。

19

我正在尝试创建一个带有自定义用户和数据库的简单的PostgreSQL容器。

这是我的docker-compose文件:

version: '2'
services:
  db.postgres:
    container_name: db.postgres
    image: postgres:10
    environment:
      - POSTGRES_USER:'myuser'
      - POSTGRES_PASSWORD:'myuserpassword'
      - POSTGRES_DB:'mydb'
    ports:
      - '5432:5432'
    volumes:
      - ./pgdata:/var/lib/postgresql/data

当我尝试连接我的数据库时,出现了错误。

docker exec -it db.postgres psql -U myuser myuserpassword
psql: FATAL:  role "myuser" does not exist

或者

$ docker exec -it db.postgres /bin/bash
root@1a0531e0350f:/# psql -U myuser
psql: FATAL:  role "myuser" does not exist

创建数据库时,Docker-compose环境变量似乎被忽略了。

我不知道该怎么办。你有什么解决问题的想法吗?

谢谢!

1个回答

15

请按照以下方式修改您的docker-compose.yml文件:

version: '2'
services:
  db.postgres:
    container_name: db.postgres
    image: postgres:10
    environment:
      - POSTGRES_USER=myuser
      - POSTGRES_PASSWORD=myuserpassword
      - POSTGRES_DB=mydb
    ports:
      - '5432:5432'
    volumes:
      - ./pgdata:/var/lib/postgresql/data

那么请完全删除当前的数据,然后重新运行 docker-compose up


谢谢!但是我不理解很多文档中使用的符号“ENV_VAR: value”,例如:https://hub.docker.com/_/postgres/ 或 https://docs.docker.com/samples/library/postgres/#-via-docker-stack-deploy-or-docker-compose。 - zlacheman
1
我不得不删除Postgres的Docker卷。 - Vikas Pal
你可以使用 - VAR=valueVAR: value - vpalmerini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接