2017-09-26 3 views
1

J'utilise alpine (min. 3,5) et je dois utiliser NodeJS 4.8.4Docker/alpin: Comment installer NodeJS 4.8.4 à l'image alpine

Dockerfile

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

Mais cela me donne l'erreur

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 

Comment installer nodeJS dans la version 4.8.4 en utilisant alpine?

+0

Avez-vous essayé d'utiliser https://github.com/nodejs/docker-node/blob/master/4.8/alpine/Dockerfile avec juste la première ligne changée en 'alpine: 3.5' ​​et vos propres paquets ajoutés? –

Répondre

1

Vous avez deux alternatives:

  1. Utilisation du alpine 3.5 image, construire nodejs à partir de la source
  2. Utiliser le nœud: 4.8.4-alpine puis le mettre à jour en alpin 3.6

Voici comment le premier Dockerfile regarderais (copié directement à partir de l'image officielle):

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

Ou pour la seconde 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/* 

L'avantage de compiler votre propre binaire est que l'image globale aura moins de hiérarchie (elle dépendra uniquement de l'alpin 3.5) tandis que la seconde dépendra du nœud: argon-alpin qui dépend de l'alpin 3.4 mais qui est techniquement un alpin 3.5 mais la seconde image sera en effet plus rapide à construire puisque le la compilation aura déjà été faite

-1

utilisation FROM node:4.8.4-alpine l'image cela vous donnera NodeJS avec goût alpin cela permet d'économiser du temps et est beaucoup plus facile que l'installation du nœud à l'intérieur alpin https://hub.docker.com/_/node/

+0

Non, en tant que nœud: 4.8.4-alpine utilise alpine 3.4, qui ne supporte pas GraphicsMagick out of the box. Pour cela alpine 3.5 est nécessaire ... – user3142695

+0

alors votre question doit être: comment installer graphicsmagick avec le nœud 4.8.4 en apline? 'not' Comment installer nodeJS dans la version 4.8.4 en utilisant alpine? ' – Vignajeth