【问题标题】:Docker gradlew build fails with HibernateExceptionDocker gradlew 构建失败并出现 HibernateException
【发布时间】:2020-01-27 18:41:00
【问题描述】:

我正在尝试对使用 gradle 和 kotlin 的 spring boot 应用程序进行 dockerize。我有一个看起来像这样的 Dockerfile:

FROM java:8-jdk-alpine as build-and-run
WORKDIR /app
COPY . .
RUN ./gradlew build --stacktrace --scan

ENV ARTIFACT_NAME=resource-server-0.0.1-SNAPSHOT.jar
ENV APP_HOME=/app
WORKDIR $APP_HOME
COPY --from=build $APP_HOME/build/libs/$ARTIFACT_NAME .
EXPOSE 80
ENTRYPOINT ["java","-jar","/build/libs/$ARTIFACT_NAME"]

./gradlew build 命令在 docker 之外运行良好,但一旦我尝试构建 docker 映像,它就会失败:

xyz.resourceserver.ResourceServerApplicationTests > contextLoads FAILED
    java.lang.IllegalStateException
        Caused by: org.springframework.beans.factory.BeanCreationException
            Caused by: org.hibernate.service.spi.ServiceException
                Caused by: org.hibernate.HibernateException

我在application.properties 中确实有用于 Spring Boot 的数据库连接属性,所以我真的不知道这有什么问题。

【问题讨论】:

    标签: spring hibernate spring-boot docker gradle


    【解决方案1】:

    您的数据库连接似乎不成功。如果您的数据库在本地运行,请尝试以下操作。

    使用 --network=host 选项。这种网络模式本质上意味着容器可以直接访问 localhost,您现在可以访问 localhost:3306。这是命令

    docker run -p 8080:8080 --network=host
    

    【讨论】:

    • 我对@9​​87654322@ 命令有问题,而不是docker run 命令。我看不出这有什么帮助,因为我什至无法构建 docker 映像。
    【解决方案2】:

    我将应用程序配置为在运行测试时使用内存数据库,从而解决了问题。

    【讨论】:

      猜你喜欢
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 2019-08-13
      • 1970-01-01
      • 2021-11-11
      • 2020-05-07
      相关资源
      最近更新 更多