Alpine镜像目前并不能通过npm add来安装所有的npm和nodejs的版本,所以在easypack的Alping镜像中使用两种方式来进行NodeJS镜像的生成,Alpine中已经打包的直接使用,Alpine中没有的包,则通过源码编译的方式来予以实现。
Dockerfile
不考虑包下载时是否会出现异常等问题,可以使用如下最为简单的Dockerfile
liumiaocn:nodejs liumiao$ cat Dockerfile
FROM alpine:3.10.2
ENV NODE_VERSION 8.6.0
RUN apk add --no-cache curl gcc g++ python make linux-headers \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
&& tar -xf "node-v$NODE_VERSION.tar.xz" \
&& cd "node-v$NODE_VERSION" \
&& ./configure \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& cd .. \
&& rm -Rf "node-v$NODE_VERSION" \
&& rm "node-v$NODE_VERSION.tar.xz"
CMD [ "node" ]
liumiaocn:nodejs liumiao$
这样,我们只需要调节NODE