我的Spring Boot应用程序的Dockerfile:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/media-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
application.yml
spring:
datasource:
url: jdbc:postgresql://localhost:5432/media
username: postgres
password: postgres
hikari:
connectionTimeout: 30000
下面是 docker-compose.yml
文件的内容:
version: '3'
services:
db:
image: postgres
ports:
- "5432:5432"
environment:
POSTGRES_DB: media
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
app:
build:
context: ./
dockerfile: Dockerfile
depends_on:
- db
ports:
- "8080:8080"
运行docker-compose up --build
会出现以下错误:
app_1 | 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. app_1
我的猜测是spring应用程序在postgres准备好之前就尝试连接到postgres,但我得到以下日志:
db_1 | 2019-05-18 19:05:53.692 UTC [1] LOG: database system is ready to accept connections
0.0.0.0
不会起作用(而且localhost
肯定不行,因为数据库不在与您的应用程序相同的容器中)。在 Docker Compose 中,其他服务通过虚拟 DNS 可用,因此您应该能够使用db
。 - halferjdbc:postgresql://db:5432/media
进行连接。 - halferspring.datasource.url
更改为jdbc:postgresql://db:5432/media
,正如您建议的那样,使其工作。谢谢。请随意将您的评论转化为答案,以便我接受它。 - senjin.hajrulahovic