/ bin / sh: команда my_custom не найдена в контейнере Docker - PullRequest
0 голосов
/ 04 июня 2018

Контекст следующий: мне нужно запустить ffmpeg в сервисе AWS Lambda, который развернут и собран с использованием Docker.Поскольку используемый нами образ докера не является debian и не включает в себя ffmpeg, я создал двоичный файл с помощью команды и добавил его в файлы проекта.Затем внутри Dockerfile я создаю ссылку на эти двоичные файлы, чтобы команда была включена в /bin.

Это Dockerfile:

FROM lambci/lambda:build-nodejs6.10


# Create app directory
WORKDIR /app

# Install app dependencies
COPY package.json .
COPY yarn.lock .

#add ffmpeg files
COPY binaries .binaries

#make link to ffmpeg
RUN  ln -s /app/.binaries/bin/ffmpeg /bin/ffmpeg

RUN npm install --global yarn
RUN yarn install
RUN yarn global add serverless@~1.24.1

# Bundle app source
COPY . .

EXPOSE 8080
CMD [ "yarn", "run", "deploy" ]

Хотя, похоже, это работает на локальном компьютере.окружение (команда отвечает при вызове из консоли внутри образа докера), она не работает при развертывании на stage:

/bin/sh: ffmpeg: command not found

1 Ответ

0 голосов
/ 04 июня 2018

Я рекомендую заменить CMD [ "yarn", "run", "deploy" ]

на

ENTRYPOINT ["sh", "/app/.binaries/yarn"]
CMD ["run", "deploy"]

Я думаю, у вас есть 2 проблемы:

  1. Знаете ли вы, что yarn является исполняемым?Я не знаю, что это не так, но явный вызов sh означает, что это не имеет значения.
  2. Я не думаю, что yarn находится на пути.Явное использование абсолютного пути yarn означает, что это не должно иметь значения.
...