Основной процесс:
- Разверните контейнер PostgresSQL с помощью файла init.sql.
- Создайте код JOOQ для приложения (на этапе сборки образа).
- Скопируйте сгенерированный код в изображение и запуск приложения
Я пробовал использовать ссылки, сети, но ничего не помогло.
Docker Compose:
Код: Выделить всё
services:
database:
container_name: database
hostname: database
image: postgres:latest
ports:
- "5432:5432"
environment:
- PGUSER=user
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=db
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
healthcheck:
test: [ "CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}" ]
interval: 2s
timeout: 5s
retries: 5
networks:
-mynet
server:
build:
context: .
dockerfile: Dockerfile
depends_on:
database:
condition: service_healthy
ports:
- "8080:8080"
networks:
-mynet
networks:
mynet:
driver: bridge
Код: Выделить всё
FROM maven:3.9.7-amazoncorretto-17 AS build
COPY models models
RUN mvn clean package -f models/pom.xml -Plocal
Код: Выделить всё
& l t ; p r o j e c t x m l n s = & q u o t ; h t t p : / / m a v e n . a p a c h e . o r g / P O M / 4 . 0 . 0 & q u o t ; < b r / > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.abl.rjmdb
models
1.0-SNAPSHOT
17
17
UTF-8
3.19.8
42.7.3
org.jooq
jooq
${jooq.version}
org.jooq
jooq-meta
${jooq.version}
org.jooq
jooq-codegen
${jooq.version}
org.postgresql
postgresql
${postgresql.version}
local
org.postgresql.Driver
jdbc:postgresql://database:5432/db
user
password
public
org.jooq
jooq-codegen-maven
${jooq.version}
generate-sources
generate
${database.driver}
${database.url}
${database.user}
${database.password}
.*
${database.schema}
com.abl.rjmdb.model.jooq
${project.build.directory}/generated-sources/jooq
если я использую хост «базы данных» -
11.96 [ОШИБКА] Не удалось выполнить цель org.jooq:jooq-codegen-maven:3.19.8:generate (по умолчанию) в моделях проекта: Ошибка при запуске инструмента генерации кода jOOQ: Неудачная попытка подключения. Неизвестная база данных хостов -> [Справка 1]
если я использую хост «127.0.0.1» -
Не удалось выполнить цель org.jooq:jooq-codegen-maven:3.19.8:generate (по умолчанию) в моделях проекта: Ошибка при запуске инструмента генерации кода jOOQ: Соединение с 127.0.0.1:5432 отклонено. Убедитесь, что имя хоста и порт верны и что почтмейстер принимает соединения TCP/IP. Соединение отклонено
если я использую IP-адрес, полученный от докера, проверьте :
< blockquote>
Не удалось выполнить цель org.jooq:jooq-codegen-maven:3.19.8:generate (по умолчанию) в моделях проекта: ошибка при запуске инструмента генерации кода jOOQ: подключение к 172.17.0.2:5432 отклонено . Убедитесь, что имя хоста и порт верны и что почтмейстер принимает соединения TCP/IP. Соединение отклонено
Есть идеи, как можно это сделать?
Я проверял бесчисленное количество раз, контейнер PostgresSQL работает, и я могу к нему подключиться с хоста.
Может быть, не стоит генерировать код JOOQ внутри образа докера?
Я прикрепляю репозиторий на случай, если он каким-то образом будет уместен: https://github.com/AmitBarlev /RJMDB
Подробнее здесь: https://stackoverflow.com/questions/786 ... stgresql-c