alpine linux不执行已编译的nodejs

时间:2017-03-23 21:37:01

标签: docker dockerfile alpine

我试图设置我的docker文件但没有成功。

这就是我想要做的事情:

FROM alpine:3.5
ENV VERSION=4.8.1 
RUN apk add --no-cache curl make gcc g++ python linux-headers binutils-gold gnupg libstdc++ tar xz && \
    curl -sSL -o node.tar.xz https://nodejs.org/download/release/v${VERSION}/node-v${VERSION}-linux-x64.tar.xz && \
    tar xJf node.tar.xz -C /usr/local --strip-components 1 
CMD ["node", "--version"]

我得到的回应是:

Step 1 : FROM alpine:3.5
 ---> 4a415e366388
Step 2 : ENV VERSION 4.8.1
 ---> Using cache
 ---> 69c1a9ea15a9
Step 3 : RUN apk add --no-cache curl make gcc g++ python linux-headers binutils-gold gnupg libstdc++ tar xz &&  curl -sSL -o node.tar.xz https://nodejs.org/download/release/v${VERSION}/node-v${VERSION}-linux-x64.tar.xz &&   tar xJf node.tar.xz -C /usr/local --strip-components 1
 ---> Using cache
 ---> 7f508d49e0bc
Step 4 : CMD node --version
 ---> Running in 196a2ed982fd
 ---> c0e1fbc1fe23
Removing intermediate container 196a2ed982fd
Successfully built c0e1fbc1fe23
+ docker -H tcp://tjsu250n:2375 run --restart=always --name=barcode -d -p 9002:9001 tjdft_gesirh/barcode:194
c8483a53359d8a26b2f7e3e3bd01b3185a235f7722687f3aadf9c4ff6d4ac540
+ docker -H tcp://tjsu250n:2375 images -a
+ grep tjdft_gesirh/barcode
+ expr 194 - 1
+ awk {print $1}
+ grep 193
+ [ !=  ]
/tmp/hudson6046350871523920710.sh: 14: [: !=: unexpected operator
Finished: SUCCESS

但是尽管有这样的消息,命令 docker logs xpto 会返回:

standard_init_linux.go:175: exec user process caused "no such file or directory"

如果我使用 RUN 命令运行它:

RUN ls -la /usr/local/bin/ && \     
    echo $PATH && \
    npm --version

我将此作为回复:

Step 4 : RUN ls -la /usr/local/bin/ &&  echo $PATH &&   npm --version &&    ./usr/local/bin/node --version
 ---> Running in 1b6bd429d169
total 24244
drwxrwxr-x    2 500      500             27 Mar 21 19:14 .
drwxr-xr-x    6 root     root           101 Mar 23 21:02 ..
-rwxrwxr-x    1 500      500       24825844 Mar 21 19:14 node
lrwxrwxrwx    1 500      500             38 Mar 21 19:14 npm -> ../lib/node_modules/npm/bin/npm-cli.js
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[91m/usr/local/bin/npm: exec: line 2: /usr/local/bin/node: not found
[0mtime="2017-03-23T18:12:59-03:00" level=info msg="The command '/bin/sh -c ls -la /usr/local/bin/ && \techo $PATH && \tnpm --version && \t./usr/local/bin/node --version' returned a non-zero code: 127" 
Build step 'Execute shell' marked build as failure
Finished: FAILURE

我需要一些帮助。

##编辑##

oracle java也发生了错误/usr/local/bin/node: not found。不知道为什么它不能从高山执行。

2 个答案:

答案 0 :(得分:0)

由于musl-libc,我认为您需要在alpine上构建节点。

与使用预构建包的7.7 alpine Dockerfile相比,查看构建版本的官方7.7 Debian Dockerfile

Alpine也会nodejs apk packages,但它们不会像nodejs.org上的版本那样更新。

答案 1 :(得分:0)

可以使用apk下载nodejs。可以找到包裹详细信息here

apk add nodejs

应安装nodejs 6.10.1-r0。

虽然从源头构建可能很有趣也很有挑战性!可以找到示例herehere

希望有所帮助!