Docker 与尝试连接到本地主机中的 postgres 的 micronaut 组合

Docker compose with micronaut trying to connect to postgres in localhost

我有一个 micronaut 应用程序,我试图将其放入 docker 容器中,并让它连接到另一个具有 postgres 图像的 docker 容器。我想我按照程序告诉它连接到另一个容器中的 postgres 但是没有,当我尝试 运行 我的 docker 图像时它失败了,因为它无法连接到 [=31= 上的 postgres ].尽管:

Docker 文件:

FROM openjdk:14
COPY target/time-*.jar time.jar
EXPOSE 8080
CMD ["java", "-Dmicronaut.environments=docker", "-Dcom.sun.management.jmxremote", "-Xmx128m", "-jar", "time.jar"]

我用我的 docker 个人资料告诉 运行。

我的申请-docker.yml 看起来像这样:

micronaut:
  application:
    name: time
  server:
    netty:
      access-logger:
        enabled: true
        logger-name: access-logger

datasources:
  default:
    url: jdbc:postgresql://db:5432/postgres
    driverClassName: org.postgresql.Driver
    username: postgres
    password: postgres
    schema-generate: CREATE_DROP
    dialect: POSTGRES
    schema: time
jpa.default.properties.hibernate.hbm2ddl.auto: update

flyway:
  datasources:
    default:
      enabled: true
      schemas: time
...

当我 运行 我的网络容器时,它说它是 运行 docker 配置文件,但无法连接到本地主机!为什么??

18:41:57.947 [main] INFO  i.m.context.env.DefaultEnvironment - Established active environments: [docker]
18:41:58.625 [main] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
18:41:59.656 [main] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

这是我的 docker-compose.yml:

version: "3.3"
services:
  web:
    image: time
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - db
    links:
      - db
    environment:
      JDBC_URL: jdbc:postgresql://db:5432/time
      JDBC_HOST: db
      JDBC_PORT: 5432

  db:
    image: "postgres"
    ports:
      - "5432"
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres

我错过了什么?

它正在尝试本地主机,因为我的 application-docker.yml 不在罐子里。这里有人帮助了我: