Задать вопрос
@galliard

Как собрать kotlin в docker через gradle?

Нагуглил конфиг и чуток адоптировал под себя, получилось так:
FROM gradle:8.5.0-jdk21 AS build
COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle build --scan

FROM openjdk:22
EXPOSE 8181
COPY --from=build /home/gradle/src/build/libs/app.jar /app/
RUN bash -c 'touch /app/app.jar'
ENTRYPOINT ["java", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-Djava.security.egd=file:/dev/./urandom","-jar","/app/app.jar"]


Однако при запуске я получаю такую вот ошибку
64.72 > Task :compileJava NO-SOURCE
64.72 > Task :classes
64.72 > Task :resolveMainClassName
67.73 > Task :bootJar
67.73 > Task :jar
67.73 > Task :assemble
70.42 > Task :compileTestKotlin
70.42 > Task :compileTestJava NO-SOURCE
70.42 > Task :testClasses UP-TO-DATE
74.22 
74.22 > Task :test FAILED
74.22 
74.22 ExchangeApplicationTests > contextLoads() FAILED
74.22     java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:180
74.22         Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1775
74.22             Caused by: org.flywaydb.core.internal.exception.FlywaySqlException at JdbcUtils.java:60
74.22                 Caused by: org.postgresql.util.PSQLException at ConnectionFactoryImpl.java:354
74.22                     Caused by: java.net.UnknownHostException at NioSocketImpl.java:567


Как я понял flyway хочет подключиться к базе, которой на этапе сборки контейнера понятное дело нет.

В application.properties следующее
spring.jpa.hibernate.ddl-auto=none
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.url=jdbc:postgresql://pgsql/dbname
spring.datasource.username=какойтоюзер
spring.datasource.password=какойтопароль


Как можно решить данную проблему?)
  • Вопрос задан
  • 268 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Когда запускаешь команду сборки, просто пропускай этап тестов - gradle build -x test
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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