我开始使用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
有人可以帮忙吗?
答案 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)