Docker / alpine:如何在高山形象下安装nodeJS 4.8.4

我使用的是alpine (最低3.5),我需要使用nodeJS 4.8.4

Dockerfile

 FROM alpine:3.5 RUN apk add --update nodejs=4.8.4 ffmpeg graphicsmagick 

但是这给了我错误

 ERROR: unsatisfiable constraints: nodejs-6.9.5-r1: breaks: world[nodejs=4.8.4] The command '/bin/sh -c apk add --update nodejs=4.8.4 ffmpeg graphicsmagick' returned a non-zero code: 1 

如何使用alpine在4.8.4版本中安装nodeJS?

你有两个select:

  1. 使用Alpine 3.5图像,从源代码构buildnodejs
  2. 使用节点:4.8.4-alpine然后更新到高山3.6

下面是第一个Dockerfile的外观(从官方图片直接复制):

 FROM alpine:3.5 ENV NPM_CONFIG_LOGLEVEL info ENV NODE_VERSION 4.8.4 RUN addgroup -g 1000 node \ && adduser -u 1000 -G node -s /bin/sh -D node \ && apk add --no-cache \ libstdc++ \ && apk add --no-cache --virtual .build-deps \ binutils-gold \ curl \ g++ \ gcc \ gnupg \ libgcc \ linux-headers \ make \ python \ # gpg keys listed at https://github.com/nodejs/node#release-team && for key in \ 9554F04D7259F04124DE6B476D5A82AC7E37093B \ 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ FD3A5288F042B6850C66B31F09FE44734EB7990E \ 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ B9AE9905FFD7803F25714661B63B535A4C206CA9 \ C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ 56730D5401028683275BD23C23EFEFE93C4CFFFE \ ; do \ gpg --keyserver pgp.mit.edu --recv-keys "$key" || \ gpg --keyserver keyserver.pgp.com --recv-keys "$key" || \ gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" ; \ done \ && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \ && curl -SLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ && grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ && tar -xf "node-v$NODE_VERSION.tar.xz" \ && cd "node-v$NODE_VERSION" \ && ./configure \ && make -j$(getconf _NPROCESSORS_ONLN) \ && make install \ && apk del .build-deps \ && cd .. \ && rm -Rf "node-v$NODE_VERSION" \ && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt ENV YARN_VERSION 0.24.4 RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \ && for key in \ 6A010C5166006599AA17F08146C2130DFD2497F5 \ ; do \ gpg --keyserver pgp.mit.edu --recv-keys "$key" || \ gpg --keyserver keyserver.pgp.com --recv-keys "$key" || \ gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" ; \ done \ && curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ && curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ && mkdir -p /opt/yarn \ && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/yarn --strip-components=1 \ && ln -s /opt/yarn/bin/yarn /usr/local/bin/yarn \ && ln -s /opt/yarn/bin/yarn /usr/local/bin/yarnpkg \ && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ && apk del .build-deps-yarn CMD [ "node" ] 

或者为第二个select

  FROM node:4.8.4-alpine RUN sed -i -e 's/v4\.4/v3.5/g' /etc/apk/repositories \ && apk update \ && apk add --upgrade apk-tools \ && apk upgrade --available \ && rm -rf /var/cache/apk/* 

编译自己的二进制文件的好处是,整体图像将有较less的层次结构(它将取决于高山3.5只)而第二个图像将取决于节点:氩高山取决于高山3.4,但在技术上是高山3.5但是第二幅图像确实会更快,因为编译已经完成了

使用FROM node:4.8.4-alpine 4.8.4- FROM node:4.8.4-alpine形象这将给你nodejs与阿尔卑斯山风味,这节省了你的时间,比在阿尔卑斯山安装节点更容易https://hub.docker.com/_/node/