2017-10-15 76 views
1

其实我用下面的码头工人,compose.yml文件泊坞窗组成和Postgres官方图片的环境变量

version: '3.3' 

    services: 
    postgres: 
     container_name: postgres 
     image: postgres:latest 
     restart: always 
     environment: 
     POSTGRES_USER: ${POSTGRES_USER} 
     POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 
     POSTGRES_DB: ${POSTGRES_DB} 
     PGDATA: /var/lib/postgresql/data/pgdata 
     ports: 
     - "5432:5432" 
     volumes: 
     - ./data/postgres/pgdata:/var/lib/postgresql/data/pgdata 

我也用这个.ENV文件中的泊坞窗,compose.yml文件的同一目录:

POSTGRES_USER=dbadm 
POSTGRES_PASSWORD=dbpwd 
POSTGRES_DB=db 

然后我运行bash shell中倒入容器中这样说:

docker exec -ti postgres bash 

这INVO后柯命令:

psql -h postgres -U dbadm db 

而我得到的错误:

psql: FATAL: password authentication failed for user "dbadm" 

奇怪的事实是,如果使用默认的图像参数:

psql -h postgres -U admin database 

而插入默认密码为“password “,它将我记录下来,似乎忽略了环境变量。

我缺少什么?

从码头工人,组成了日志的其他日志:

postgres | 2017-10-15 09:19:15.502 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 
postgres | 2017-10-15 09:19:15.502 UTC [1] LOG: listening on IPv6 address "::", port 5432 
postgres | 2017-10-15 09:19:15.505 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" 
postgres | 2017-10-15 09:19:15.524 UTC [22] LOG: database system was shut down at 2017-10-15 09:02:21 UTC 
postgres | 2017-10-15 09:19:15.530 UTC [1] LOG: database system is ready to accept connections 

无法看到有关用户,数据库以及密码设置任何“RUN”行。

+0

这是混乱的,你正在尝试以dbadm身份登录,但它不起作用,但是您说您可以以管理员身份登录。你有没有在你的.env文件中使用管理员用户? – Sergiu

+0

感谢@Sergiu的兴趣,我说它使用图像的默认值,但它不是我的问题。 – zioMitch

+0

你能运行这个env |吗?在你的postgres容器中使用grep POSTGR? – Sergiu

回答

0

我已经创建了您提供一个码头工人,撰写阳明与细节.ENV文件,一切工作正常,你从照片上可以看到如下:

enter image description here enter image description here

我想你问题在于当你通过参数-h时。

容器内总是会本地主机然而,外面你将不得不通过:

hostname: postgres 

您的码头工人,撰写文件中,因此将有posrtgres主机名

+0

使用本地主机,它允许本地连接,并完全跳过创建的用户。问题在于我如何装入数据目录。 @sergiu – zioMitch

+0

是的没错,你只是使用本地连接,但是,在你的/ etc/hosts文件中,你将不得不添加容器IP和postgres,如下所示: 0.0.0.0 postgres 然后尝试连接 – Sergiu

+0

很好,似乎设置env变量PGDATA创建了一个在postgres存储数据库二进制文件和配置文件(也访问)的卷。然后,我在本地开发过程中安装了一个我想要在主机上进行简化的卷。但安装音量将覆盖所有看起来。我错了吗? – zioMitch