169 похожих чатов

Товарищи снова всем добрый вечер Есть проблема Задача: Требуется запустить веб-сервис на Java

Spring в контейнере, также должна быть запущена постгря в соседнем контейнере

Проблема:
При запуске через docker-compose изначально требуется .jar-ник сервиса, поэтому я делаю mvn clean install перед этим, но сервис не может сбилдится, потому что валится на проверке подключения к БД, так как она в принципе на этом этапе не запущена

Dockerfile:

FROM openjdk:17-jdk-alpine
COPY target/project.jar /app/project.jar
WORKDIR /app
ENTRYPOINT ["java", "-jar", "project.jar"]

docker-compose.yml:

version: '3'
services:
my_project:
build: .
ports:
- "8080:8080"
depends_on:
- postgres
volumes:
- /data/images:/app/data/images
restart: unless-stopped
postgres:
image: postgres:13.1
container_name: postgres
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin
POSTGRES_DB: postgres
networks:
mynet:
ipv4_address: 172.20.128.3
volumes:
- /data/postgresql:/var/lib/postgresql/data
ports:
- "5433:5432"
restart: unless-stopped

networks:
mynet:
ipam:
config:
- subnet: 172.20.128.0/24

Скорее всего я тут наворотил лишнего

Подскажите,как решить
Я подумал, что может как то нужно поменять docker-compose или Dockerfile, чтобы сначала поднималась база, но depends_on указан, но это неважно, так как проблема в изначальном билде
Также вопрос, в какую директорию на хосте правильнее делать билд? И где хранить и собственно оттуда же и запускать Dockerfile и docker-compose.yml ?
На текущий момент Docker и docker-compose.yml лежат в корневой директории проекта, а сам билд кладется в target/ там же

И что должно быть указано в application.properties проекта для подключения к постгре учитывая такой docker-compose?
сейчас прописано:
spring.datasource.url=jdbc:postgresql://172.20.128.3:5432/postgres

8 ответов

25 просмотров

https://docs.docker.com/compose/compose-file/compose-file-v3/ depends_on: - db - redis Типа такого. Докер сначала поднимет бд, потом уже твой сервис

Никита-Нироков Автор вопроса
Михаил Прокудин
https://docs.docker.com/compose/compose-file/compo...

это я понимаю тут проблема как раз в том, что я не могу изначально выполнить билд приложения

Никита Нироков
это я понимаю тут проблема как раз в том, что я не...

а почему вообще при попытке сделать сборку приложения происходит проверка подключения к БД? Для интеграционных тестов по идее должна быть отдельная БД

Никита-Нироков Автор вопроса
Михаил Прокудин
а почему вообще при попытке сделать сборку приложе...

мейвен при попытке сбилдить пишет org.postgresql.util.PSQLException: The connection attempt failed.

Никита Нироков
мейвен при попытке сбилдить пишет org.postgresql.u...

либо скипай тесты, либо прописывай конфигурацию для БД (как должно быть)

Никита-Нироков Автор вопроса
Михаил Прокудин
либо скипай тесты, либо прописывай конфигурацию дл...

ну в принципе наверное логично, что следует в таком случае тесты пропускать проблема в том, что не знаю как правильно

для сервиса, запускаемого в докере, localhost - это своя ОС. То есть сервисная. Чтобы сервис достучался до базы, ему нужно идти по ссылке типа jdbc:postgresql://{имя контейнера с базой}:5432/my_db

в остальном конфигурация относительно стандартная

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта