【发布时间】:2019-07-21 10:47:00
【问题描述】:
我有一个使用 ffmpeg 的 Node 后端。我使用多阶段构建构建了 docker,部分节点部分 ffmpeg(Dockerfile 稍后粘贴在下面)。构建完成后,我在本地访问 Docker 并看到 ffmpeg 已正确安装在其中。然后我将这个 docker 部署到弹性 beanstalk。奇怪的是,一旦在那里,当访问 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
访问泊坞窗。它包含所有节点的东西,但缺少 ffmpeg。它不像部署之前那样在 /usr/local/bin 中。
我什至直接在 eb 上安装了 ffmpeg,但这对我没有帮助,因为节点后端在 docker 中搜索以找到 ffmpeg。非常感谢您从中看到的任何指针或危险信号,谢谢
编辑:Docker 版本的唯一区别是在本地运行的是 18.09 / API 1.39,而在 eb 上运行的是 18.06 / API 1.38
【问题讨论】:
-
对于现在阅读本文的任何人,我做错了两件事 1) 我没有提交我的 Dockerfile,所以没有考虑到 2) 我的弹性 beanstalk t2.micro 实例没有'没有足够的 cpu 或 ram 来完成安装 ffmpeg,所以它超时了。完成这两件事后,它就起作用了
标签: docker ffmpeg amazon-elastic-beanstalk