当前位置: 首页 > 知识库问答 >
问题:

我们可以从graalvm docker内部创建本机映像并在任何地方运行它吗?

鲜于河
2023-03-14

我们是 Graalvm 的新手,正在构建一个简单的 Java 命令行应用程序。罐子在jvm模式下运行良好(爪哇 - 罐子

FROM ghcr.io/graalvm/native-image:ol8-java17

COPY . /home/app
WORKDIR /home/app

RUN ./mvnw clean package
RUN native-image -cp target/appj-1.0.0.jar "org.nqm.Appj"
RUN mv org.nqm.Appj appj
RUN chmod +x appj

docker映像已成功构建。

然后,我们尝试访问容器(docker run--rm--name dkappj-it--entrypoint bash dkappj)以收集本机映像文件。在docker容器内部,我们可以使用<code>运行它/appj没有任何错误。

但是,当我们将本机映像文件复制到主机并使用<code>运行它时/appj它会产生一个错误:

zsh: exec format error: ./appj

所以我的问题是,我们能从graalvm docker容器内部创建本机映像,复制它并在任何地方运行它吗?或者我们必须在我们的主机上安装Graalvm才能执行本机映像?因为我认为graalvm原生映像实际上是机器代码(就像用C语言创建的应用程序一样)

编辑:当我在运行相同操作系统(Ubuntu20.04)的新计算机上复制整个代码库时,本机映像在主机上运行良好。

共有1个答案

华锦程
2023-03-14

(回答我自己的问题)

我们可以从graalvm docker内部创建本机映像并在任何地方运行它吗?

答案是肯定的!

由于一些特定原因,我现在能够在docker容器中构建本机映像文件并运行它。

 类似资料:
  • 我正在使用Micronaut,并使用它的cli创建一个java-cli-app。它没有额外的代码,通过运行main方法运行良好。当执行./gradlew构建时,它还创建了一个包含所有依赖项的jar。 我也可以使用GraalVM 19.1.1和19.2.0构建本地映像,而且运行良好。 当我通过手动运行以下任务来构建本机映像时 它也运行良好, 当创建jar时,它会自动运行。 我已经试过了, 这不起作用

  • 我工作在一个微服务应用程序,有多个服务。我正在使用docker-compose运行不同微服务的实例。我们为每个微服务创建一个映像。如果我改变了一个微服务的代码,我使用'docker-compose down',然后改变更新的微服务的版本,然后使用'docker-compose up'。我认为,应该有一种不使用'docker-compose down'和'docker-compose up'的方法在

  • 问题内容: 我们可以与一起使用其他任何TAG 吗? 喜欢 问题答案: 为了使您的代码有效,您不能在之外的标签中放置任何标签。 不过,您可以将任何块级元素放在中,如下所示:

  • 问题内容: 如果我有一个基本的Python脚本,并带有hashbang和不存在的内容,那么可以从Linux上的终端运行 无需通过解释器或任何文件扩展名执行,它将执行该程序。 所以我会安装此脚本,以便我可以简单地键入 在系统中的任何地方,它将运行?可以为系统上的所有用户实施此操作,还是必须为每个用户重做此操作?我是否只是将脚本放置在特定目录中,还是有其他必要? 问题答案: 放置这样的东西的最佳地点是

  • 我可以在docker上导入此图像,但无法运行。 我所做的: 将图像文件从“.img”格式压缩为“.tar.gz”格式,以便导入docker图像。我使用7-zip工具来转换这个。 我使用这个新文件(.tar.gz)<从本地文件导入了docker图像 试图运行此导入的映像,但失败。 执行的命令: 我对此错误进行了大量搜索,发现为了运行,我们需要指定创建映像时使用的路径(在Dockerfile中),但我

  • 萨拉姆! 在java中,我需要在该类中创建一个类的ArrayList。有可能吗???正如我所知,如果我在该类构造函数中创建一个类的对象,那么它将导致StackOverFlow。下面给出了问题的完整细节。如何在BookInfo类本身中创建该类的ArrayList??? 问题声明: 您需要编写一个java程序,该程序只包含两个名为BookInfo和BookMgtSys的类。 BookInfo类必须具有