【发布时间】:2019-06-04 16:05:16
【问题描述】:
我正在为 postgresql 运行 docker-compose 容器。容器中的 postgresql 数据库在标准端口 5432 上运行,我将该端口发布到主机上的端口 5444(因为正在使用主机的 postgresql 默认端口)。
我在主机和容器中使用相同的配置(一个为 cli 命令和整个应用程序提供配置设置的 .env 文件)。不幸的是,无论我选择哪个端口,一个系统都会失去访问权限。例如,我无法运行:
[k@host]$ pgsql -p 5444 # Connects
在主机中并且在容器内仍然有工作:
[k@db-container]$ pgsql -p 5444 # Errors in container
容器的 postgresql-server 正在 5432 上运行:
[k@db-container]$ pgsql -p 5432 # Connects successfully in container
并且端口是通过 docker-compose.yml 发布的: - 端口: - “5444:5432”
所以目前我不知道如何简单地通过 docker-compose.yml 配置相同的端口! expose 命令公开端口但不允许重新映射,ports 转发主机容器,但不重新映射内部端口。我曾想过在 postgresql 容器配置中重新映射 postgresql 默认端口,但是通过 docker-compose 在每个 docker-compose up 上完全重新配置 postgresql 似乎并非易事。
如何重新映射容器内的端口,以便可以在主机和容器中的任何地方使用端口 5444?
【问题讨论】:
标签: postgresql docker docker-compose docker-networking