我有一个使用ffmpeg的Node后端。我使用多阶段构建,部分节点部分ffmpeg(稍后在下面粘贴的Dockerfile)构建了docker。构建完成后,我在本地访问Docker,并看到ffmpeg已正确安装在其中。然后,我将此泊坞窗部署到弹性beantalk。奇怪的是,一旦进入docker镜像,ffmpeg就会消失。我绝对不知道发生了什么,为什么部署时docker也不一样。
更多详细信息:
Dockerfile
FROM jrottenberg/ffmpeg:3.3-alpine
FROM node:11
# copy ffmpeg bins from first image
COPY --from=0 / /
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm install --only=production
# Bundle app source
COPY . .
EXPOSE 6969
CMD [ "npm", "run", "start:production" ]
我使用以下命令构建docker:
docker build -t <project-name> .
此后,我将以这种方式访问本地docker:
docker run -i -t <project-name> /bin/bash
当我输入“ ffmpeg”,it recognizes it时,如果我尝试使用“ whereis”,它将返回我/ usr / local / bin。
然后我将其部署为eb
eb deploy
这是有趣的地方
我通过SSH进入eb实例。到达那里后,我找到了容器ID并使用
docker exec -it <instance-id> bash
访问docker。它具有所有节点的内容,但是缺少ffmpeg。它不在部署之前的/ usr / local / bin目录中。
我什至直接在eb上安装了ffmpeg,但这对我没有帮助,因为节点后端在docker中搜索以找到ffmpeg。您从中看到的任何指针或危险信号都将受到赞赏,谢谢
edit:Docker版本中的唯一区别是本地运行的版本是18.09 / API 1.39,而eb上的版本是18.06 / API 1.38
答案 0 :(得分:0)
我的弹性beantalk t2.micro实例没有足够的cpu或ram来完成ffmpeg的安装,因此超时了。升级到t2.medium解决了该问题