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 ответов

11 просмотров

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

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

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Кто может подсказать? Я преобрпзовал изображение в бинарное(у меня установлен трекбар который при установленном значении меняет пиксели на белый если меньше и чёрный если боль...
Константин VS
6
Карта сайта