PostgreSQL + 元数据库连接被拒绝

PostgreSQL + metabase connection refused

我正在尝试使用 springboot 和元数据库将 postgres 配置为 运行。每个服务都是单独 运行ning,但是当我尝试将 3 个服务放在一个 docker-compose 文件中时,出现以下错误:

 Caused by: org.postgresql.util.PSQLException: Connection to 0.0.0.0:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
metabase-container |    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303)

不过我已经把db的5432端口映射到了metabase容器的5432端口

然而,它似乎不起作用。对这个问题有帮助吗? (请在下面找到我的 docker-compose 文件)

version: '2'

services:
  spring:
    image: 'realtime:latest'
    container_name: spring
    depends_on:
      - db
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/compose-postgres
      - SPRING_DATASOURCE_USERNAME=compose-postgres
      - SPRING_DATASOURCE_PASSWORD=same
      - SPRING_JPA_HIBERNATE_DDL_AUTO=update
    volumes:
      - /home/vagrant/valorisation-2.0:/app
    command: ["java", "-jar", "rtv-1.jar"] 
    mem_limit: 10g
    mem_reservation: 10g
    ports:
      - "8079:8080"
  db:
    image: 'postgres:13.1-alpine'
    container_name: db
    environment:
      - POSTGRES_USER=compose-postgres
      - POSTGRES_PASSWORD=********
      - METABASE_PASSWORD=same
    ports:
      - "8078:5432"
      - "54320:5432"
  metabase:
    container_name: metabase-container
    restart: "always"
    image: metabase/metabase
    ports:
      - "3000:3000"
      - "5432:5432"
    environment:
      - MB_DB_TYPE=postgres
      - MB_DB_DBNAME=db
      - MB_DB_PORT=5432
      - MB_DB_USER=compose-postgres
      - MB_DB_PASS=same
      - MB_DB_HOST=0.0.0.0
      - MB_ENCRYPTION_SECRET_KEY=********

尝试将元数据库环境变量中的 MB_DB_HOST0.0.0.0 更改为 db

我不明白的微妙之处在于所有服务都在同一个网络中。因此,删除服务之间的端口转发(将服务暴露给外部组件但与容器内的通信无关)并更改 Metabase 配置文件就可以完成这项工作。这是修改后的 docker-compose.yml 文件:

version: '2'

services:
  spring:
    image: 'realtime:latest'
    container_name: spring
    depends_on:
      - db
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/compose-postgres
      - SPRING_DATASOURCE_USERNAME=********
      - SPRING_DATASOURCE_PASSWORD=**********
      - SPRING_JPA_HIBERNATE_DDL_AUTO=update
    volumes:
      - /home/vagrant/valorisation-2.0:/app
    command: ["java", "-jar", "rtv-1.jar"] 
    mem_limit: 10g
    mem_reservation: 10g
    ports:
      - "8079:8080"
  db:
    image: 'postgres:13.1-alpine'
    container_name: db
    environment:
      - POSTGRES_USER=compose-postgres
      - POSTGRES_PASSWORD=compose-postgres
      - METABASE_PASSWORD=compose-postgres
    ports:
      - "8078:5432"
  metabase:
    container_name: metabase-container
    depends_on:
      - db
    restart: "always"
    image: metabase/metabase
    ports:
      - "3000:3000"
    environment:
      - MB_DB_TYPE=postgres
      - MB_DB_DBNAME=********
      - MB_DB_PORT=5432
      - MB_DB_USER=************
      - MB_DB_PASS=compose-postgres
      - MB_DB_HOST=db
      - MB_ENCRYPTION_SECRET_KEY=***********