docker容器角色“postgres”中的postgres不存在

dauxcl2d  于 2022-12-11  发布在  Docker
关注(0)|答案(2)|浏览(229)

1.使用以下命令创建postgres Docker容器:docker run -v /home/ec2-user/Vteck-postgres-data:/var/lib/postgresql/data -d -e POSTGRES_USER=odoo POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name vteck-db postgres
1.访问Docker容器:docker exec -it vteck-db bash
1.与客户端连接:root@f1ba565db798:/# psql -U postgres psql: error: could not connect to server: FATAL: role "postgres" does not exist
但是如果我使用docker run --rm -d -e POSTGRES_PASSWORD=root --name postgres postgres创建Docker容器,我可以成功地使用psql - U postgres进行连接。
我的第一步命令有问题吗?

up9lanfz

up9lanfz1#

postgres readme on Docker hub开始:
POSTGRES_USER
此可选环境变量与POSTGRES_PASSWORD一起使用,以设置用户及其口令。此变量将创建具有超级用户权限的指定用户和同名的数据库。如果未指定,则将使用默认用户postgres
换句话说,如果您指定POSTGRES_USER环境变量,将不会有postgres使用者,而是会建立一个使用者,其名称来自环境变量(在您的案例中为odoo)。

roejwanj

roejwanj2#

在您的yml文件中,创建一个非“postgres”的POSTGRES_DB

<snip>
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: heavymetaldifficultmoeilijk
      POSTGRES_DB: foodb
<snip>

从主机连接到容器:

# docker exec -it myproject_pg_container_name /bin/bash

然后,从容器中:

root@d14c082e80c8:/# psql -U postgres

米迦勒

相关问题