Docker组合和postgres官方图像环境variables
其实我正在使用下面的docker-compose.yml文件
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文件在docker-compose.yml文件的同一目录中:
POSTGRES_USER=dbadm POSTGRES_PASSWORD=dbpwd POSTGRES_DB=db
然后我用这种方法将一个bash shell运行到容器中:
docker exec -ti postgres bash
然后调用该命令:
psql -h postgres -U dbadm db
我得到的错误:
psql: FATAL: password authentication failed for user "dbadm"
奇怪的事实是,如果使用默认的图像参数:
psql -h postgres -U admin database
并插入默认密码“密码”,它将我login,似乎忽略了环境variables。
我错过了什么?
来自docker的其他日志 – 组成日志:
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”行。
我已经创build了docker-compose yml和.env文件,并提供了详细的信息,一切正常,从下面的图片可以看到:
我认为你的问题在于你传递了-h参数。
在容器内将永远是本地主机,但是,你将不得不通过:
hostname: postgres
在你的docker-compose文件里面,所以它会有posrtgres主机名
- IntelliJ IDEA或Eclipse可以在一个操作系统上运行UI,但是在另一个操作系统的容器上编译 – 生成 – 执行?
- 连接到Docker容器中的Postgres时发生身份validation错误
- 阻止到其中一个docker群服务任务容器的stream量
- 如果运行在Docker镜像中的马拉松应用程序处于“部署”状态,那么我们应该在哪里检查应用程序未部署的原因?
- 有没有人知道包含MySQLtesting框架,版本2.0的docker图像?
- 错误“无法连接到Docker守护进程。 升级Linux内核之后,是否在此主机上运行“docker -d”?
- 控制docker – 从Gradle构build脚本构build
- Docker Postgres扩展
- 未知无法查询docker版本:无法读取TLS config:tls:未能在证书input中find任何PEM数据
- docker工人 – 仅组成一个容器
- 主机重启后,Docker Volumes不会被挂载