泊坞窗/高山:如何在高山图像

问题描述:

安装4.8.4的NodeJS我使用alpine(最小3.5),我需要使用4.8.4的NodeJS泊坞窗/高山:如何在高山图像

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 

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

+0

您是否尝试过使用https://github.com/nodejs/docker-node/blob/master/4.8/alpine/Dockerfile,并将第一行更改为'alpine:3.5'并添加了您自己的软件包? –

你有两种选择:

  1. 使用高山3.5 image,从源代码构建nodejs
  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" ] 

或第二替代

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

自己编译的二进制的好处是整体形象将有较少的等级(它将仅取决于阿尔卑斯3.5),而第二个图像将取决于节点:阿尔卑斯高山依靠高山3.4,但技术上是阿尔卑斯山3.5,但第二个图像确实会更快建立自汇编已经完成

使用FROM node:4.8.4-alpine图像这会给你的NodeJS的高山风味这样可以节省您的时间和比安装内部高山节点更容易 https://hub.docker.com/_/node/

+0

不,作为节点:4.8.4-alpine正在使用alpine 3.4,它不支持开箱即用的graphicsmagick。因此,需要高山3.5 ... – user3142695

+0

然后你的问题需要'如何安装graphicsmagick与节点4.8.4在apline? '不'我如何使用alpine?在4.8.4版本中安装nodeJS?' – Vignajeth