在Docker Compose中更改postgres容器服务器端口

我正在尝试使用Docker撰写在远程服务器上部署第二个数据库容器。 这个postgresql服务器运行在端口5433上,而不是第一个postgresql容器使用的5432。

当我设置应用程序,我得到这个错误输出:

web_1 | django.db.utils.OperationalError: could not connect to server: Connection refused web_1 | Is the server running on host "db" (172.17.0.2) and accepting web_1 | TCP/IP connections on port 5433? 

和我的docker撰写文件是:

 db: image: postgres:latest environment: POSTGRES_PASSWORD: route_admin POSTGRES_USER: route_admin expose: - "5433" ports: - "5433" volumes: - ./backups:/home/backups web: build: . command: bash -c "sleep 5 && python -u application/manage.py runserver 0.0.0.0:8081" volumes: - .:/code ports: - "81:8081" links: - db environment: - PYTHONUNBUFFERED=0 

我觉得这个问题必须是服务器实例上的postgresql.conf文件,它将端口设置为5432,导致在我的应用程序尝试连接到该端口时发生错误。 有没有一个简单的方法来改变使用撰写文件中的命令端口,而不是乱搞卷来replace文件?

我正在使用官方postgresql容器进行这项工作。

我假设postgres在容器中的端口5432上运行,并且您想要在5433上的主机上公开它。

在ports中使用这个:

 ports: -"5433:5432" 

这将暴露在主机端口5433上的服务器。 在这种情况下,您可以摆脱现有的公开条款。

如果您只想将服务公开给组合文件中声明的其他服务,只需使用公开的strophe并将其指向内部公开的端口5432即可。