【发布时间】:2021-04-14 17:18:42
【问题描述】:
首先我使用 Dockerfile 构建了一个镜像:
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*-SNAPSHOT.jar
ADD ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
因为我有两个 docker-compose 文件,一个用于生产:
version: "3"
services:
app:
image: "demo:latest"
container_name: demo-production-api
restart: always
depends_on:
- "productiondb"
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://productiondb:5432/testdb
- SPRING_DATASOURCE_HIKARI_JDBC_URL=jdbc:postgresql://productiondb:5432/testdb
- SPRING_DATASOURCE_USER=tester
- SPRING_DATASOURCE_PASSWORD=test
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
ports:
- "8440:8443"
productiondb:
image: "postgres:latest"
container_name: productiondb
ports:
- "5430:5432"
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
volumes:
- postgres-db-production:/usr/local/var/postgres
volumes:
postgres-db-production:
还有一个用于开发:
version: "3"
services:
app:
image: "demo:latest"
container_name: demo-develop-api
restart: always
depends_on:
- "developdb"
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://developdb:5432/testdb
- SPRING_DATASOURCE_HIKARI_JDBC_URL=jdbc:postgresql://developdb:5432/testdb
- SPRING_DATASOURCE_USER=tester
- SPRING_DATASOURCE_PASSWORD=test
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
ports:
- "8441:8443"
developdb:
image: "postgres:latest"
container_name: developdb
ports:
- "5431:5432"
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
volumes:
- postgres-db-develop:/usr/local/var/postgres
volumes:
postgres-db-develop:
我使用以下方法构建两个图像:
docker-compose -p demo-production-api -f docker-compose.yml up -d && docker-compose -p demo-develop-api -f docker-compose-develop.yml up -d
现在我可以同时构建 demo-develop-api 和 demo-production-api 两个环境,来自 demo-develop-api docker 镜像的 Spring Boot 应用程序使用以下命令运行:
docker run -it demo-develop-api
应用程序运行,但我不断收到此错误:
原因:java.net.UnknownHostException: productiondb
将 application.properties 文件中的数据库主机从 localhost 更改为 productiondb 后发生上述错误,首先我得到以下信息:
org.postgresql.util.PSQLException:连接到 localhost:5432 拒绝了。检查主机名和端口是否正确,以及 postmaster 正在接受 TCP/IP 连接。
为什么会出现此问题或原因是什么? 如何解决此类问题?
【问题讨论】:
标签: postgresql spring-boot docker docker-compose