一尘不染

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

docker

我正在尝试使用Docker
compose在远程服务器上部署第二个数据库容器。该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?

我的泊坞窗撰写文件是:

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导致我的应用尝试与其连接时导致错误。有没有一种简单的方法可以使用撰写文件中的命令来更改端口,而不是用卷来代替文件?

我正在为此工作使用官方的postgresql容器。


阅读 895

收藏
2020-06-17

共1个答案

一尘不染

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

在端口冲突中使用此命令:

ports:
    -"5433:5432"

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

如果仅要将服务公开给在撰写文件中声明的其他服务(而不是本地主机),则只需使用公开信息并将其指向已经在内部公开的端口5432。

请记住,EXPOSE指令实际上并没有做任何事情(它对您来说只是一个提示)。使用或不使用伪指令,端口5432将暴露给compose文件中声明的其他服务。

2020-06-17