docker node 环境获取视频时长异常

2022-04-22  本文已影响0人  鹤空

异常

docker ffmpeg failed to resolve hostname system error
在mac下执行正常,放到docker中异常

具体原因

https://superuser.com/questions/1141609/android-tcp-error-failed-to-resolve-host-name-from-static-library

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

解决方式

  1. 不使用host, 使用IP
  2. 使用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环境的软件可能不兼容。但大部分没问题。

上一篇下一篇

猜你喜欢

热点阅读