Я создаю свое первое приложение Springboot 2.0.Я пытаюсь поместить мое приложение Springboot в один контейнер докеров, а мой PostgresDB - в другой контейнер.
Мой Dockerfile
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD springboot-api-demo-0.1*.jar app.jar
RUN sh -c 'touch /app.jar'
EXPOSE 9443
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/urandom -jar /app.jar" ]
Мой файл docker-compose.yml
version: "2.1"
services:
springboot-api-demo:
image: "fw/springboot-api-demo"
mem_limit: 1024m
ports:
- "8080:8080"
environment:
- SPRING_PROFILES_ACTIVE=local
- AWS_REGION=local
- ENVIRONMENT=local
- AUTH_ENABLED=false
postgres:
container_name: pgdb
image: postgres:9.6-alpine
environment:
- 'POSTGRES_ROOT_PASSWORD=postgres'
- 'POSTGRES_USER=postgres'
- 'POSTGRES_PASSWORD=postgres'
ports:
- "54321:5432"
Я использую Springboot JPAДанные 2.0 с данными конфигурации ниже в моем application.properties
spring.datasource.url= jdbc:postgresql://localhost:54321/java_learning
spring.datasource.username=postgres
spring.datasource.password=postgres
Я могу проверить, что оба изображения работают.Кроме того, из журнала Docker и событий Docker я вижу, что Postgres Container работает нормально, даже я могу получить к нему доступ, а также создал БД.Но контейнер Springboot запустился, но я умер, потому что он не мог подключиться к postgress и выбрасывать ошибку ниже.
Невозможно получить соединение из базы данных: попытка соединения не удалась
Обратите внимание, что на моем хост-компьютере уже есть Postgres на порту 5432, поэтому я сделал отображение порта 54321:5432 на моем контейнере postgres.Вот доказательство :) -
➜ springboot-api-demo git:(master) ✗ lsof -i:54321
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
com.docke 44345 shailendra.singh 18u IPv4 0xf62897fbdd69e31d 0t0 TCP *:54321 (LISTEN)
com.docke 44345 shailendra.singh 21u IPv6 0xf62897fbdd119975 0t0 TCP localhost:54321 (LISTEN)
➜ springboot-api-demo git:(master) ✗ lsof -i:5432
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 715 shailendra.singh 5u IPv6 0xf62897fbb43e03b5 0t0 TCP localhost:postgresql (LISTEN)
postgres 715 shailendra.singh 6u IPv4 0xf62897fbbaeea9bd 0t0 TCP localhost:postgresql (LISTEN)
Я не уверен, в чем проблема.Но мое приложение Springboot не может подключить мой контейнер postgres, который работает нормально, с надлежащими учетными данными.