Файл Docker не найден, но я его вижу - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь Dockerize приложение, которое имеет файлы в двух каталогах:

BOTFILES/
  ...
ChatScript/
  BINARIES/
    LinuxChatScript64
  DICT/
  ...

В моем Dockerfile я копирую каждый каталог отдельно.

FROM alpine:3.9


# https://github.com/ChatScript/ChatScript
RUN mkdir /bot
COPY ChatScript/ /bot/ChatScript
RUN chmod +x /bot/ChatScript/BINARIES/LinuxChatScript64

COPY BOTFILES/ /bot/BOTFILES

WORKDIR /bot/ChatScript

EXPOSE 1024

CMD ["./BINARIES/LinuxChatScript64"]

chmod +x работает правильно, но когда я пытаюсь запустить контейнер, я получаю следующую ошибку:

standard_init_linux.go:207: exec user process caused "no such file or directory"

Если я изменю строку CMD на /bin/ash, я могу получить работающий терминал и увидеть, что файл BINARIES/LinuxChatScript64 находится там и имеет разрешение на выполнение. Однако, если я попытаюсь запустить его, даже с интерактивного терминала, я получу /bin/ash: ./BINARIES/LinuxChatScript64: not found. Таким образом, я могу видеть файл, я могу cat файл, но запуск файлов просто возвращает мне ошибку «файл не найден». Чего мне не хватает?

1 Ответ

1 голос
/ 04 июня 2019

Если это бинарный файл, он динамически связан?Возможно, отсутствуют общие библиотеки.Проверьте ldd на хост-компьютере для получения списка.

Если это сценарий, установлен ли интерпретатор сценария?Например, Alpine не поставляется с предустановленным bash, поэтому сценарии, использующие его, завершатся с ошибкой «not found»:

$ docker run -it --rm alpine:latest /bin/ash
/ # echo '#!/bin/bash' > script
/ # chmod +x script
/ # ./script
/bin/ash: ./script: not found
/ # apk add bash
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/5) Installing ncurses-terminfo-base (6.1_p20190105-r0)
(2/5) Installing ncurses-terminfo (6.1_p20190105-r0)
(3/5) Installing ncurses-libs (6.1_p20190105-r0)
(4/5) Installing readline (7.0.003-r1)
(5/5) Installing bash (4.4.19-r1)
Executing bash-4.4.19-r1.post-install
Executing busybox-1.29.3-r10.trigger
OK: 14 MiB in 19 packages
/ # ./script
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...