当前位置: 首页 > 面试题库 >

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

孙德本
2023-03-14
问题内容

我正在尝试使用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容器。


问题答案:

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

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

ports:
    -"5433:5432"

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

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

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



 类似资料:
  • 我试图使用Docker Compose在远程服务器上部署第二个数据库容器。此postgresql服务器运行在端口5433上,而不是第一个postgresql容器使用的端口5432。 当我设置应用程序时,我得到以下错误输出: 我的docker组合文件是: 我觉得问题一定是服务器实例上的文件将端口设置为5432,导致应用程序试图连接到它时出现错误。是否有一种简单的方法可以使用compose文件中的命令

  • 问题内容: 我想在侦听器中指定可侦听的默认端口。是否有比在内部解析并插入配置的端口更容易的修复方法? 目标是运行时不必每次都指定地址和端口,而要从中获取参数。 问题答案: 使用以下命令创建一个bash脚本: 将其保存为runserver并与manage.py放在同一目录中 并运行为

  • 问题内容: 我有一个postgres数据库,其中包含几个要监视其更新的表,并且如果有任何更新,则要触发“嘿,某些更改”更新。这在基本情况下有效,但是现在是时候进行改进了。 效果很好。我将其附着在桌子上,如下所示: (作为一个附带的问题:如果有比触发函数中的mess’o’$$更好/更容易的方法来对触发结果进行json.stringify的字符串化,请让我知道。平衡引号并不有趣)。 我要执行的操作是将

  • 简介 Laravel 的服务容器是一个管理类依赖和执行依赖注入的强力工具。依赖注入是个花俏的名词,事实上是指:类的依赖通过构造器或在某些情况下通过「setter」方法「注入」。 不同于 Laravel Lumen 使用了与 Laravel 框架相同的服务容器,所以,你可以使用它们所有强大的功能。有关容器的完整文档,请阅读 Laravel 容器文档 。 获取服务容器 Laravel\Lumen\Ap

  • Container 服务容器是一个用于管理类的依赖和执行依赖注入的强大工具。其实质是通过反射来对构造函数或者标记为[Inject]特性的属性选择器进行注入。 简介 几乎所有的服务绑定都是在服务提供者中完成。如果一个服务没有基于任何接口那么就没有必要将其绑定到容器(除非他是组件内部使用的类)。 容器并不需要被告知如何构建对象,因为它会使用反射技术自动解析出具体的对象实例。 在服务提供者中我们可以使用