2016-05-24 10 views
2

Ich habe folgendes Dockerfile:Knoten nicht in der alpinen Docker gefunden

FROM alpine:3.3 

RUN apk update \ 
    && apk add curl tar git gzip 

RUN curl --retry 3 --retry-delay 20 --show-error --location --remote-name --silent "https://nodejs.org/dist/v6.2.0/node-v6.2.0-linux-x64.tar.gz" \ 
    && tar -xzf "node-v6.2.0-linux-x64.tar.gz" -C /usr/local --strip-components=1 --same-owner \ 
    && rm -rf "node-v6.2.0-linux-x64.tar.gz" \ 
    && ls -la /usr/local/bin && env \ 
    && /usr/local/bin/node -v \ 
    && npm cache clear 

das Bild Gebäude gibt mir:

Sending build context to Docker daemon 13.51 MB 
Step 1 : FROM alpine:3.3 
---> 3e467a6273a3 
Step 2 : RUN apk update  && apk add curl tar git gzip # bzip2 build-essential libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev python python-dev python-pip python-virtualenv libkrb5-devENV NODE_VERSION=6.2.0 
---> Using cache 
---> 65f46657024a 
Step 3 : RUN curl --retry 3 --retry-delay 20 --show-error --location --remote-name --silent "https://nodejs.org/dist/v6.2.0/node-v6.2.0-linux-x64.tar.gz"  && tar -xzf "node-v6.2.0-linux-x64.tar.gz" -C /usr/local --strip-components=1 --same-owner  && rm -rf "node-v6.2.0-linux-x64.tar.gz"  && ls -la /usr/local/bin && env  && /usr/local/bin/node -v  && npm cache clear 
---> Running in 32967b91e2dd 
total 26828 
drwxrwxr-x 2 500  500   4096 May 17 19:40 . 
drwxr-xr-x 10 root  root   4096 May 24 14:28 .. 
-rwxrwxr-x 1 500  500  27459658 May 17 19:40 node 
lrwxrwxrwx 1 500  500    38 May 17 19:40 npm ->  ../lib/node_modules/npm/bin/npm-cli.js 
HOSTNAME=27c9668b3d5e 
SHLVL=1 
HOME=/root 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
PWD=/ 
/bin/sh: /usr/local/bin/node: not found 
The command '/bin/sh -c curl --retry 3 --retry-delay 20 --show-error --location --remote-name --silent "https://nodejs.org/dist/v6.2.0/node-v6.2.0-linux-x64.tar.gz"  && tar -xzf "node-v6.2.0-linux-x64.tar.gz" -C /usr/local --strip-components=1 --same-owner  && rm -rf "node-v6.2.0-linux-x64.tar.gz"  && ls -la /usr/local/bin && env  && /usr/local/bin/node -v  && npm cache clear' returned a non-zero code: 127 
Build image failed 

Wie ist es möglich, für den Knoten nicht gefunden werden? Es im richtigen Verzeichnis installiert ist, ist es auf dem Weg, und die Ausführung Erlaubnis hat ...

Antwort

2

Es gibt eine official and up to date node package for alpine, brauchen Sie nicht es manuell zu installieren, fügen Sie einfach diese Zeile in Ihrer Dockerfile:

RUN apk add nodejs=6.2.0-r0 

Oder Sie könnten eine existing nodejs alpine image verwenden:

FROM mhart/alpine-node:6.2.0 

auf einer Seite zur Kenntnis, der ganze Sinn der Verwendung eines alpinen basierten Bild ist von der Unordnung loszuwerden, die Installation git, Teer et al. ist eine Verschwendung von Raum IMHO.

+0

Nun, ich denke, Sie haben Recht. Ich wollte Flexibilität beim Erstellen meines benutzerdefinierten Knotenbilds, aber ich denke, das funktioniert auch. – Petru

+0

@Petru können Sie auch [Mhart/alpine-node Dockerfile] (https://github.com/mhart/alpine-node/blob/0493edba910ec6e6f0598acb27e7578631cdfc4a/Dockerfile) verwenden, es gibt Ihnen ein funktionierendes Skript und Sie können es wie Sie anpassen wollen. – Shanoor

+0

Ja, das habe ich gesehen. Es scheint übermäßig kompliziert, deshalb habe ich versucht, meine eigene vereinfachte Version zu machen. Dies funktionierte mit einer Debian-Basis, aber alpine gibt diesen seltsamen Fehler :( – Petru