【问题标题】:Docker "not found" for existing fileDocker“未找到”现有文件
【发布时间】:2017-04-28 20:09:51
【问题描述】:

我正在使用 Docker 构建一个电子节点应用程序,但我遇到了一些奇怪的行为。构建似乎成功,但是当我运行电子应用程序时,出现“未找到”错误,但文件确实存在。我可以 ls 文件和 cat 文件,但无法获取/执行文件。

$ docker -v
Docker version 17.03.1-ce, build c6d412e

Dockerfile:

FROM node:alpine
RUN mkdir -p /usr/src
WORKDIR /usr/src
COPY package.json /usr/src
RUN npm install
COPY . /usr/src
RUN npm run build:linux 
ENTRYPOINT "/usr/src/docker-entrypoint.sh"

这将导致这个目录的生成:

/usr/src/app/builds/app-linux-x64

包含一堆文件,包括一个名为 app 的可执行文件。

/usr/src/app/docker-entrypoint.sh: line 5: ./app: not found

确实存在。

/usr/src/app/builds/app-linux-x64 # ls -lah
total 124472
drwxr-xr-x    4 root     root        4.0K Apr 28 20:07 .
drwxrwxr-x    1 root     root        4.0K Apr 28 20:07 ..
-rw-r--r--    1 root     root        1.0K Apr 28 20:07 LICENSE
-rw-r--r--    1 root     root        1.6M Apr 28 20:07 LICENSES.chromium.html
-rw-r--r--    1 root     root       24.3K Apr 28 20:07 blink_image_resources_200_percent.pak
-rw-r--r--    1 root     root          15 Apr 28 20:07 content_resources_200_percent.pak
-rw-r--r--    1 root     root        9.7M Apr 28 20:07 content_shell.pak
-rw-r--r--    1 root     root        9.7M Apr 28 20:07 icudtl.dat
-rw-r--r--    1 root     root        2.8M Apr 28 20:07 libffmpeg.so
-rwxr-xr-x    1 root     root       19.4M Apr 28 20:07 libnode.so
drwxr-xr-x    2 root     root        4.0K Apr 28 20:07 locales
-rw-r--r--    1 root     root      334.7K Apr 28 20:07 natives_blob.bin
-rw-r--r--    1 root     root      136.6K Apr 28 20:07 pdf_viewer_resources.pak
drwxr-xr-x    2 root     root        4.0K Apr 28 20:07 resources
-rw-r--r--    1 root     root      970.2K Apr 28 20:07 snapshot_blob.bin
-rwxr-xr-x    1 root     root       76.7M Apr 28 20:07 app
-rw-r--r--    1 root     root      159.4K Apr 28 20:07 ui_resources_200_percent.pak
-rw-r--r--    1 root     root           6 Apr 28 20:07 version
-rw-r--r--    1 root     root       58.7K Apr 28 20:07 views_resources_200_percent.pak

我能找到它:

/usr/src/app/builds/app-linux-x64 # ls -lah app
-rwxr-xr-x    1 root     root       76.7M Apr 28 20:07 app

但我无法运行它:

/usr/src/app/builds/app-linux-x64 # ./app 
/bin/sh: ./app: not found

【问题讨论】:

  • 一些奇怪的东西WORKDIR /usr/src COPY . /usr/src 所以你从 .usr.src 复制到 /usr/src
  • 什么是应用程序,它是二进制还是 shell 脚本?如果是后者,文件的第一行是什么?
  • @user2915097 复制命令从 .并将它们复制到容器中,workdir 更改容器内的目录。构建上下文是一个完全不同的位置。
  • 你能在容器内运行file app吗?可执行文件可能与您尝试运行它的机器的体系结构不兼容

标签: linux docker filesystems docker-machine


【解决方案1】:

我自己也有类似的问题,通过将 sh 放在要运行的脚本前面来解决。对你来说是:

ENTRYPOINT "sh" "/usr/src/docker-entrypoint.sh"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2018-04-17
    • 2021-05-05
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    相关资源
    最近更新 更多