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

224 阅读1分钟

异常

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

具体原因

superuser.com/questions/1…

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/"

github.com/SavageCore/… github.com/joshwnj/ffp…

解决方式

  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镜像版本。

  1. node:<version>

    基于Debian,官方默认镜像。 当你不确定你需要什么的时候选择这个就对了。这个被设计成可以丢弃的镜像,也就是可以用作构建源码使用。体积挺大。

  2. node:<version>-slim

    基于Debian, 删除了很多默认公共的软件包,只有node运行的最小环境。除非你有空间限制,否则推荐使用默认镜像。

  3. node:<version>-alpine

    基于alpine, 比Debian小的多。如果想要最小的镜像,可以选择这个做为base。需要注意的是,alpine使用musl代替glibc。一些c环境的软件可能不兼容。但大部分没问题。