postgresql - 在 docker 容器错误中连接到 Postgresql
问题描述
version: '1'
services:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: mtuser
POSTGRES_USER: mtpass
adminer:
image: adminer
restart: always
ports:
- 8080:8080
这是我的码头工人撰写文件。编译时没有错误,docker桌面也没有问题,所有容器都在运行。
但我无法通过 pgAdmin 或 .net 核心连接连接到 Postgresql。
但我可以通过管理员 v4.8.1 连接
解决方案
首先,您使用撰写文件格式有什么特别的原因version: '1'
吗?你至少应该使用version: '2'
,否则会有兼容性问题。请参阅此处的兼容性表。
关于您的问题:您的“db”postgres 服务没有公开任何端口,也没有将 postgres db 端口从容器映射到主机。因此,您无法从 docker 网络之外的任何外部服务访问它。管理员可以连接,因为它在同一个 docker 网络中。但是使用较新的撰写文件格式应该是不可能的,因为同样,您没有在“db”服务上公开任何端口。
该文件应如下所示:
version: '2'
services:
db:
image: postgres
restart: always
ports:
- "5432:5432" #<- Postgres Db port mapped to host machine.
environment:
- POSTGRES_PASSWORD=mtuser
- POSTGRES_USER=mtpass
adminer:
image: adminer
restart: always
ports:
- 8080:8080
推荐阅读
- python - 如何在python中从同级目录导入模块
- vivado-hls - SDSoC:仅使用数组的一部分作为 HLS 函数中的顺序输入
- android - Xamarin Forms - 我如何在 Android 设备上总计空间和可用空间?
- python - Python - 无法导入名称
- r - Tidymodels 课程费用
- phpspreadsheet - 如何使用 PHPSpreadSheet 将图像上传到电子表格的单元格中?
- android - 使用 NavDeepLinkBuilder:通知片段
- c++ - 如何获取使用 x86intrin.h 在 MAC 上运行的代码
- azure - 我们如何以编程方式迭代租户中的 Power Apps?
- excel - Excel 按多个条件过滤表值