简体   繁体   中英

Docker/alpine: How to install nodeJS 4.8.4 at alpine image

I am using alpine (min. 3.5) and I need to use nodeJS 4.8.4

Dockerfile

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

But this gives me the error

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

How do I install nodeJS in version 4.8.4 using alpine?

You have two alternatives:

  1. Using the alpine 3.5 image, build nodejs from source
  2. Use the node:4.8.4-alpine then update it to alpine 3.6

Here is how the first Dockerfile would look(copied straight from the official image):

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

Or for the second alternative

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

The benefit of compiling your own binary is that the overall image will have less of a hierarchy (it will depend on alpine 3.5 only) while the second image will depend on node:argon-alpine which depends on alpine 3.4 but is technically an alpine 3.5 but the second image will indeed be faster to build since the compilation will already have been done

使用FROM node:4.8.4-alpine图像这将为您提供具有高山风味的nodejs,这可以节省您的时间,并且比在高山内安装节点要容易得多https://hub.docker.com/_/node/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM