docker-compose for jakartaee restful jpa 网络应用程序不工作

docker-compose for jakartaee restful jpa web application not working

为了一个简单的 jakartaEE/JavaEE restful JPA Web 应用程序编写 docker-compose 文件,我苦苦挣扎了几天。 DB是PostgreSQL,应用服务器是payara。此应用程序向数据库和 returns 集合中的每个 rest 调用响应中插入少量条目。当我在本地安装的 payara 和 Postgres 中部署相同的应用程序时,它工作正常。但它因 docker-compose 错误而失败:

An error occurred during deployment: Class 
       com.docker.java.petstore.service.PetstoreService has unsupported major or 
      minor version numbers, which are greater than those found in the Java 
      Runtime Environment version 1.8.0_222. Please see the server.log for more details.

https://imgur.com/a/zVvVaGP

我尝试从 payara 管理控制台部署 war 文件,但因同样的错误而失败。

相关代码显示在要点中: https://gist.github.com/JohnyzHub/cf8e9560b8640dbfd27dc4bb98d5991c

使用的环境:

        java 11
        JakartaEE 8
        Payara appserver
        postgresql

使用 glassfish-resource.xml 文件动态创建连接池和数据源。

错误看起来很奇怪,我正在使用 java 11,但错误是关于特定的 java 8 版本。我不知道这里可能出了什么问题。

当我使用相同的 docker 文件部署没有 JPA 层的类似 java 11 Web 应用程序时,它在 docker 上运行良好。

如果需要更多详细信息,请告诉我。

感谢任何帮助。

您的服务器的错误表明您编译 类 的版本 (JDK11) 高于其当前在 docker 中使用的 (JDK8)图片。

检查应用程序服务器 Docker 映像上使用的 Java 运行时。 然后要么使用该 JDK8 版本的服务器编译宠物店,要么升级 docker 容器映像以使用比用于编译的版本更高的 JDK。

Dockerhub 上的官方 Payara Docker images 内部使用的是 Java 8。这与您的 Java 11 编译源代码冲突并且不起作用。

在 GitHub 上有一个 open issue,但不幸的是,现在回答几个月了。

作为解决方法,要么选择另一个应用程序服务器(例如,Open Liberty Universal Base Docker 图像具有 latest Java versions 的标签),要么构建您自己的 Docker 图像,例如一个 OpenJDK 11 基础镜像。

要了解如何创建自己的 Docker 图像,我建议您查看 Adam Bien's Docklands repository,其中包含多个示例。