找不到Docker映像中的可执行文件

阿沃贾克

我正在尝试从Dockerfile构建Docker映像,该Dockerfile复制并提取.zip包含可执行文件(myapp以及其他文件)的档案。有一个docker-entrypoint.sh运行可执行文件脚本。docker build成功完成,但是当我运行映像入口点脚本失败说,可执行文件无法找到。

$ docker build .

Successfully built 890ec2f09ad4

$ docker run 890ec2f09ad4

./docker-entrypoint.sh: line 3: ./myapp: not found

我已经验证了可执行文件已从存档中提取出来,并且通过执行ls -lindocker-entrypoint.sh脚本在正确的目录中运行了该命令

-rwxrwxr-x    1 root     root            45 Jan 20 22:16 docker-entrypoint.sh
-rwxr-xr-x    1 root     root         71473 Jan 20 22:16 myapp
-rw-r--r--    1 root     root           177 Jan 20 22:16 myapp.ini

如果我docker-entrypoint.sh在Docker映像之外的可执行文件旁边运行相同的脚本,则一切运行正常。

我也尝试过:

  • 直接从Dockerfile运行可执行文件(导致类似的“找不到文件”错误)
  • 使用ubuntu:latest基本映像(相同错误)
  • 使用dos2unix确保行尾正确(不变)

我还能尝试什么?我是Docker的新手,这似乎很容易完成,所以我不确定我哪里出错了...


Dockerfile:

FROM alpine:latest

RUN mkdir -p /opt/app/
WORKDIR /opt/app/

COPY target/products/myapp.zip .
RUN unzip myapp.zip && rm myapp.zip

COPY docker-entrypoint.sh .
RUN chmod +x docker-entrypoint.sh

ENTRYPOINT ["./docker-entrypoint.sh"]

docker-entrypoint.sh:

#!/bin/sh

./myapp
阿沃贾克

感谢@VolArt将我的注意力转向可执行文件类型。

原来,问题在于可执行文件(ELF 64位LSB可执行文件,动态链接)与Alpine之间的兼容性。解决方案是简单地使用其他基础图像。最后,我还需要JRE 8,因此我选择了openjdk:8-jre基础映像。(我还需要手动安装unzip

有助于查明问题的相关文章:

Dockerfile:

FROM openjdk:8-jre

RUN mkdir -p /opt/app/
WORKDIR /opt/app/

RUN apt-get update && apt-get upgrade -y
RUN apt-get install unzip -y

COPY target/products/myapp.zip .
RUN unzip myapp.zip && rm myapp.zip

COPY docker-entrypoint.sh .
RUN chmod +x docker-entrypoint.sh

EXPOSE 8081

ENTRYPOINT ["/opt/app/docker-entrypoint.sh"]

docker-entrypoint.sh:

#!/bin/sh

/opt/app/myapp

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Docker基本映像:无法启动容器XXX:exec:“ cat”:在$ PATH中找不到可执行文件

docker 映像中的 sh 在 Windows 10 上看不到可执行文件

找不到可执行文件

在$ PATH Dockerfile中找不到可执行文件

在$ PATH中找不到可执行文件

exec:在$ PATH中找不到可执行文件

$ PATH中找不到Unix可执行文件

Ubuntu在PATH中找不到可执行文件

在 $PATH 中找不到可执行文件:未知

Docker --env文件-在$ PATH中找不到可执行文件

Docker 的“在 $PATH 中找不到可执行文件:未知”试图运行“cd”

“ sqlplus”:使用docker exec运行命令时,在$ PATH中找不到可执行文件

Ros2 找不到在 Docker 中运行的可执行文件

Docker --mount抛出:$ PATH中找不到可执行文件”

docker-exec失败:“ cd”:在$ PATH中找不到可执行文件

Docker,\“ ping \”:在$ PATH中找不到可执行文件“:未知

使用AWS Batch / ECS时在PATH中找不到Docker可执行文件

docker本地注册表“ exec:\“ htpasswd \”:在$ PATH中找不到可执行文件”

exec:“ com.docker.cli”:在$ PATH中找不到可执行文件

在$ PATH中找不到Docker Elasticsearch 1.7可执行文件”

“ docker-containerd-shim”:在$ PATH中找不到可执行文件:未知

exec:“ docker-runc”:在$ PATH中找不到可执行文件:未知

在$ PATH中找不到Docker撰写可执行文件”:未知

Docker容器构建失败:“ exec:\” flask \”:在$ PATH中找不到可执行文件”:未知

即使将Docker“在$ PATH中找不到可执行文件”,即使将它添加到基本映像中的路径中?

在Linux上的Azure Web App中运行dotnet核心docker映像时,找不到与命令“ dotnet-/ .. /。dll”相匹配的可执行文件

尝试详细运行docker容器或docker exec时,在$ PATH中找不到错误可执行文件

将Docker映像配置为可执行文件

来自Angular4应用的Docker容器:“ -p”:在$ PATH中找不到可执行文件