问题描述
我有一个要安装在docker容器中的micronaut应用程序,并将其连接到另一个具有postgres图像的docker容器。我认为我已按照指示告诉它连接到另一个容器中的postgres的过程进行操作,但是没有,当我尝试运行docker映像时,它失败了,因为它无法连接到localhost:5432上的postgres。即使:
Dockerfile:
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 配置文件一起运行。
我的application-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
...
当我运行Web容器时,它说它正在使用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
我想念什么?
解决方法
它正在尝试localhost,因为我的application-docker.yml不在jar中。这里有人帮助了我:Micronaut not connecting to db in yml