gpt4 book ai didi

docker - 找不到Docker镜像中的可执行文件

转载 作者:行者123 更新时间:2023-12-02 18:52:19 27 4
gpt4 key购买 nike

我正在尝试从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 -l脚本中执行 docker-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镜像之外的可执行文件旁边运行相同的 docker-entrypoint.sh脚本,则一切运行正常。

我也尝试过:
  • 直接从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)

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

  • https://serverfault.com/questions/883625/alpine-shell-cant-find-file-in-docker
  • https://askubuntu.com/questions/133389/no-such-file-or-directory-but-the-file-exists

  • 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

    关于docker - 找不到Docker镜像中的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54281646/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com