docker node 环境获取视频时长异常
2022-04-22 本文已影响0人
鹤空
异常
docker ffmpeg failed to resolve hostname system error
在mac下执行正常,放到docker中异常
具体原因
imitation of statically linking glibc is the loss of DNS resolution. Installing
nscd through your package manager will fix this or you can use
"ffmpeg -i http://<ip address here>/" instead of "ffmpeg -i http://example.com/"
https://github.com/SavageCore/node-ffprobe-installer/issues/66
https://github.com/joshwnj/ffprobe-static/issues/13
解决方式
- 不使用host, 使用IP
- 使用docker node官方 slim版本
- FROM node:lts-alpine
+ FROM node:lts-slim
ENV NODE_ENV=production
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install --production --silent && mv node_modules ../
COPY . .
EXPOSE 3002
RUN chown -R node /usr/src/app
USER node
ENV JOBS=""
CMD ["npm", "start", "--", "-j", "${JOBS}"]
扩展
关于node版本选择
先来看看node官方的docker镜像有哪些版本。
node:<version> 基于Debian,官方默认镜像。
当你不确定你需要什么的时候选择这个就对了。这个被设计成可以丢弃的镜像,也就是可以用作构建源码使用。体积挺大。
node:<version>-slim 基于Debian, 删除了很多默认公共的软件包,只有node运行的最小环境。除非你有空间限制,否则推荐使用默认镜像。
node:<version>-alpine 基于alpine, 比Debian小的多。如果想要最小的镜像,可以选择这个做为base。需要注意的是,alpine使用musl代替glibc。一些c环境的软件可能不兼容。但大部分没问题。