在Docker中使用JET Excelsior运行可执行二进制文件

时间:2017-03-30 06:29:03

标签: docker dockerfile

我开始使用Docker,试图将我的应用程序添加到其中,然后运行。该应用程序是使用Jet Excelsior编译的基于Java的。

我使用以下简单的docker文件进行构建。

#Dockerfile

FROM alpine:latest
COPY ["/", "/sandbox"]
WORKDIR /sandbox
ENTRYPOINT ["myapp"]
CMD ["-XX:+PrintFlagsFinal","-XX:+PrintGCDetails"]

我使用标准docker build -t sandbox .

构建

我确认文件夹结构和所有文件都已正确传输。我通过docker run sandbox ls *执行此操作。但是,当我使用docker运行沙箱时,我收到错误:

  

container_linux.go:247:启动容器进程导致" exec:\" myapp \":$ PATH"

中找不到可执行文件

我试过不使用exec表格,即ENTRYPOINT / CMD myapp;甚至ENTRYPOINT / CMD ./myapp,我得到了:

  

/ bin / sh:myapp:not found

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

尝试复制文件而不是整个文件夹。如果这不起作用,请尝试CMD [" myapp"," arg1",...]没有入口点。

更新:我认为您可能没有复制该文件。您可以在容器内运行ls以查看容器中文件系统的外观。您复制/这是文件系统的根目录。你可能想要复制吗? (当前目录)?

答案 1 :(得分:0)

是" myapp"文件存在于WORKDIR目录(WORKDIR / myapp)中? 现在将所有本地根目录(/)复制到/ sandbox容器目录。

https://adrdangerousgoods.com

如果您需要/想要将根目录复制到容器,则需要使用" myapp"的完整路径,例如:

COPY ["/", "/sandbox"]

或者只是更新路径:

ENTRYPOINT /full/path/in/container/to/myapp

但也许最好的决定是将COPY命令更改为:

ENV PATH="/full/path/in/container/to/:${PATH}"

答案 2 :(得分:0)

在发布这个问题之前,我显然看起来不够努力。事实证明,在JET Excelsior的知识库中,这个问题有一个specific solution