当前位置: 首页 > 知识库问答 >
问题:

docker springboot仅通过docker-comush在postgres 5432上连接

竺勇
2023-03-14

使用docker通过docker compose将springboot连接到postgres。在postgres上使用5432端口可以正常工作,如果我尝试其他端口,它就会失败

工作代码

Spring

spring.datasource.url=jdbc:postgresql://db:5432/wwc
spring.datasource.username=wwc
spring.datasource.password=test
spring.datasource.driver-class-name=org.postgresql.Driver

docker compose

version: '2.1'
services:
  db:
    container_name: db
    image: postgres:9.4
    ports:
      - 5432:5432
    volumes:
      - /tmp:/var/lib/postgresql
    environment:
      - POSTGRES_USER=wwc
      - POSTGRES_DB=wwc
      - POSTGRES_PASSWORD=test
  server:
    container_name: spring-boot-rest-server
    build:
      context: .
      dockerfile: Dockerfile.server
    ports:
      - 8080:8080
    logging:
      driver: json-file
    depends_on:
      - db

  web:
    container_name: nginx-web
    links:
      - "server:springboot"
    build:
      context: .
      dockerfile: Dockerfile.web
    ports:
      - 80:80
      - 8088:8088
    logging:
      driver: json-file
    depends_on:
      - server

**拒绝连接代码**

Spring

spring.datasource.url=jdbc:postgresql://db:6000/wwc
spring.datasource.username=wwc
spring.datasource.password=test
spring.datasource.driver-class-name=org.postgresql.Driver

docker compose

version: '2.1'
services:
  db:
    container_name: db
    image: postgres:9.4
    ports:
      - 6000:5432
    volumes:
      - /tmp:/var/lib/postgresql
    environment:
      - POSTGRES_USER=wwc
      - POSTGRES_DB=wwc
      - POSTGRES_PASSWORD=test
  server:
    container_name: spring-boot-rest-server
    build:
      context: .
      dockerfile: Dockerfile.server
    ports:
      - 8080:8080
    logging:
      driver: json-file
    depends_on:
      - db

  web:
    container_name: nginx-web
    links:
      - "server:springboot"
    build:
      context: .
      dockerfile: Dockerfile.web
    ports:
      - 80:80
      - 8088:8088
    logging:
      driver: json-file
    depends_on:
      - server

错误:

spring boot rest服务器| org。postgresql。util。PSQLException:与db:6000的连接被拒绝。检查主机名和端口是否正确,邮政局长是否接受TCP/IP连接。

我做错了什么?

共有2个答案

汝岳
2023-03-14

换句话说:docker-comush中配置的端口映射与容器之间的连接方式无关。只有当某人/某物试图从外部连接到docker-comush中的容器时,映射才相关。(就像@Mihai评论的那样,从localhost。)

曾弘扬
2023-03-14

您有点混淆了端口:您的“db”容器只导出1个端口:5432。放入docker compose的6000是本地主机上的端口,映射到该端口(5432)上的容器(db)。

你甚至不应该使用postgres容器的端口映射,除非你想从localhost连接,我想你不会。

如果您想使用5432以外的其他端口,您需要扩展postgres Dockerfile并更改配置,以便postgres开始监听不同的端口。

希望这有帮助。

 类似资料:
  • 我试图在docker compose中运行python selenium。我有以下文件: docker撰写。yml: Dockerfile: 测验py: 我跑: 我在测试中发现了一个连接被拒绝的错误。在尝试创建webdriver时使用py。 查看日志,hub和chrome驱动程序似乎已启动并运行,chrome驱动程序已连接到hub。我可以从应用程序ping hub和chrome容器。有什么想法吗?

  • 问题内容: 我想创建以下基础结构流: 使用Docker如何实现? 问题答案: 首先,您需要在要ssh- in的映像中安装SSH服务器。您可以对安装了ssh服务器的所有容器使用基础映像。然后,您只需要运行每个容器,即可将ssh端口(默认为22)映射到主机端口(镜像中的远程服务器)到一个端口。即: 然后,如果可以从外部访问主机的端口52022和53022,则可以使用主机的ip(远程服务器)通过ssh在

  • 问题内容: 我的django项目无法连接到postgres数据库容器。我该怎么办? 它在命令时崩溃。我知道docker run命令会创建一个新的容器,但是在docker-compose.yml中,bash包含了更多命令。它应该工作,不是吗? 我的: 我的: : 输出: 我使用:Windows 10 Docker 17.03.0-ce-win1-(10296)docker-compose版本1.11

  • 我正在使用PhpStorm 2018.3.4,Docker,MySQL和Ubuntu。我试图配置MySQL与Docker容器不成功。 首先,我尝试了以下配置: 它给了我这个错误: 然后,我试了一下: 这个给了我另一个错误。 我错过什么了吗?有没有其他地方我必须配置一些东西? 输出: 这里: 对于命令,这里是描述的链接:https://pastebin.com/9LmeAkc8 下面是docker-

  • 我在docker容器中运行JHipster注册表。在docker上运行的所有应用程序都可以连接并在注册表endpoint(端口8761)中注册。 但是,当我尝试连接一个运行在IDEA上的应用程序时,我在尝试连接到注册表endpoint时收到一个错误: 应用程序连接到Register(在日志中查看),但之后我收到错误: 有人知道我如何连接到docker中运行的注册表吗? 我的Spring申请。yml

  • 问题内容: 我有下面的例子 效果很好。当我运行它时,在其中创建那些命名的卷,一切都很好。但是,从主机上,我只能以root 用户身份访问,因为它是(有意义的)。我想知道是否有一种方法可以将主机的目录设置为更明智/更安全的目录(例如,我用来在主机上执行大多数操作的相对没有特权的用户),或者我是否只需要手动将其吸干。我已经开始有许多脚本可以解决其他问题,因此多行几行不会有太大问题,但是如果我愿意的话,我