【发布时间】:2021-05-06 21:44:46
【问题描述】:
我有一个在非容器实例上运行的本地 PostgreSQL 实例,我不确定我是在 SpringBoot 还是在 Docker 中正确进行配置。在包含本地 PostgreSQL 实例的所有必要详细信息的 local 配置文件上运行 SpringBoot 应用程序时,启动成功。但是,当我通过 Docker 执行此操作时,一切都无法正常运行,而是在本地运行容器时返回此错误。
Dockerfile
FROM openjdk:15-alpine
ENV DB_URL=jdbc:postgresql://localhost:5432/sampledb
ENV DB_USER=dbuser
ENV DB_PASS=dbpass
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT [ "java", \
"-jar", \
"-Dspring.profiles.active=docker", \
"-Dapp.database.url=${DB_URL}", \
"-Dapp.database.user=${DB_USER}", \
"-Dapp.database.pass=${DB_PASS}", \
"/app.jar" ]
application-docker.properties
spring.datasource.url=${app.database.url}
spring.datasource.username=${app.database.user}
spring.datasource.password=${app.database.pass}
我在构建Dockerfile 后使用此命令:
docker run -it -p 8080:8080 <container_name>
现在容器控制台日志打印出这个错误,我没有任何数据库连接。
2021-02-02 16:54:02.702 ERROR 1 --- [ main] 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.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303) ~[postgresql-42.2.18.jar!/:42.2.18]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.18.jar!/:42.2.18]
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:225) ~[postgresql-42.2.18.jar!/:42.2.18]
我知道我应该将 PostgreSQL 设置为 docker 容器。但是,我需要 PostgreSQL 成为 Kubernetes 集群中的外部资源。
【问题讨论】:
-
本地 postgres 是否与 docker 容器运行在同一台机器上?
标签: postgresql spring-boot docker kubernetes