dockerfile:
FROM anapsix/alpine-java:8_server-jre_unlimited
# copy application
COPY server.jar /opt/test/
COPY application.yml /opt/test/
# expose server ports
EXPOSE 8080 18080
# Run via dumb-init
WORKDIR /opt/test
ENTRYPOINT ["java"]
CMD ["-jar", "server.jar"]
docker-compose files:
services:
backend-server:
image: test.com/server:latest
build: .
depends_on:
- database-server
ports:
- "127.0.0.1:8080:8080"
- "127.0.0.1:18080:18080"
database-server:
image: postgres:9.6
ports:
- "127.0.0.1:5432:5432"
environment:
- POSTGRES_PASSWORD testtest
файл свойств приложения:
spring:
datasource:
# use default user/database created by PostgreSQL Docker image upon startup
url: jdbc:postgresql://localhost/postgres
username: postgres
password: testtest
driver-class-name: org.postgresql.Driver
Когда я запускаю docker-compose, он создает контейнер базы данных и контейнер приложения, который подключается к контейнеру базы данных.
Но контейнер приложения Spring сталкивается с некоторой проблемой при загрузке с ошибкой:
org.postgresql.util.PSQLException: Соединение с локальным узлом: 5432 отказано. Убедитесь, что имя хоста и порт указаны правильно и что администратор почты принимает соединения TCP / IP.
docker container ls
показывает, что база данных запущена, и я могу получить к ней доступ, если я запускаю приложение Spring напрямую.
a295bfd16e2c postgres:9.6 "docker-entrypoint.s…" About a minute ago Up About a minute 127.0.0.1:5432->5432/tcp server_database-server_1
Так в чем же проблема, которую я испортил?
Решение, которое я нашел
services:
backend-server:
image: test.com/server:latest
build: .
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://database-server/postgres
depends_on:
- database-server
ports:
- 8080:8080
- 18080:18080
database-server:
image: postgres:9.6
ports:
- 5432:5432
environment:
- POSTGRES_PASSWORD testtest
Но я все еще не могу получить доступ к приложению с localhost:8080
моего компьютера, даже журнал контейнера говорит
2018-10-31 15: 02: 40,881 INFO 1 --- [main]
o.s.b.w.embedded.tomcat.TomcatWebServer: Tomcat запущен на портах:
8080 (http) с контекстным путем ''
2018-10-31 15: 02: 40,881 INFO 1 --- [main]
com.test.server.Application: запущенное приложение в
12,823 секунды (JVM работает 13,235)