/ bin / sh:在Docker容器中找不到my_custom命令

时间:2018-06-04 10:37:43

标签: bash docker binary sh

上下文如下:我需要在使用Docker部署和构建的AWS Lambda服务中运行ffmpeg。由于我们使用的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" ]

虽然这似乎在本地环境中起作用(该命令在从docker的图像中的控制台调用时响应),但在部署到阶段时它不起作用:

/bin/sh: ffmpeg: command not found

1 个答案:

答案 0 :(得分:0)

我建议替换CMD [ "yarn", "run", "deploy" ]

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

我认为你有两个问题:

  1. 您知道yarn是可执行的吗?我不知道它不是,但明确地调用sh意味着它无所谓。
  2. 我认为yarn不在路径中。明确使用yarn的绝对路径意味着它无关紧要。