持续构建:NodeJS的Alpine镜像
发布日期:2021-06-30 20:13:26 浏览次数:2 分类:技术文章

本文共 3756 字,大约阅读时间需要 12 分钟。

Alpine镜像目前并不能通过npm add来安装所有的npm和nodejs的版本,所以在easypack的Alping镜像中使用两种方式来进行NodeJS镜像的生成,Alpine中已经打包的直接使用,Alpine中没有的包,则通过源码编译的方式来予以实现。

Dockerfile

不考虑包下载时是否会出现异常等问题,可以使用如下最为简单的Dockerfile

liumiaocn:nodejs liumiao$ cat Dockerfile FROM alpine:3.10.2ENV NODE_VERSION 8.6.0RUN 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_VERSION即可实现实际所需的各种版本了。

构建镜像

构建命令:docker build -t nodejs:8.6.0 .

执行日志如下所示:

liumiaocn:nodejs liumiao$ docker build -t nodejs:8.6.0 .Sending build context to Docker daemon  2.048kBStep 1/4 : FROM alpine:3.10.2 ---> 961769676411Step 2/4 : ENV NODE_VERSION 8.6.0 ---> Using cache ---> dd07b5279b74Step 3/4 : 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" ---> Running in 71d46d64111bfetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gzfetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz(1/29) Installing ca-certificates (20190108-r0)(2/29) Installing nghttp2-libs (1.39.2-r0)(3/29) Installing libcurl (7.66.0-r0)(4/29) Installing curl (7.66.0-r0)(5/29) Installing libgcc (8.3.0-r0)(6/29) Installing libstdc++ (8.3.0-r0)(7/29) Installing binutils (2.32-r0)(8/29) Installing gmp (6.1.2-r1)(9/29) Installing isl (0.18-r0)(10/29) Installing libgomp (8.3.0-r0)(11/29) Installing libatomic (8.3.0-r0)(12/29) Installing mpfr3 (3.1.5-r1)(13/29) Installing mpc1 (1.1.0-r0)(14/29) Installing gcc (8.3.0-r0)(15/29) Installing musl-dev (1.1.22-r3)(16/29) Installing libc-dev (0.7.1-r0)(17/29) Installing g++ (8.3.0-r0)(18/29) Installing linux-headers (4.19.36-r0)(19/29) Installing make (4.2.1-r2)(20/29) Installing libbz2 (1.0.6-r7)(21/29) Installing expat (2.2.8-r0)(22/29) Installing libffi (3.2.1-r6)(23/29) Installing gdbm (1.13-r1)(24/29) Installing ncurses-terminfo-base (6.1_p20190518-r0)(25/29) Installing ncurses-terminfo (6.1_p20190518-r0)(26/29) Installing ncurses-libs (6.1_p20190518-r0)(27/29) Installing readline (8.0.0-r0)(28/29) Installing sqlite-libs (3.28.0-r1)(29/29) Installing python2 (2.7.16-r1)Executing busybox-1.30.1-r2.triggerExecuting ca-certificates-20190108-r0.triggerOK: 213 MiB in 43 packagescreating ./icu_config.gypi* Using ICU in deps/icu-smallcreating ./icu_config.gypi...省略installing /usr/local/include/node/zconf.hinstalling /usr/local/include/node/zlib.hRemoving intermediate container 1c2618a7e260 ---> 5c08b71b6037Step 4/4 : CMD [ "node" ] ---> Running in c07ecf97874cRemoving intermediate container c07ecf97874c ---> a850b7abb6efSuccessfully built a850b7abb6efSuccessfully tagged nodejs:8.6.0liumiaocn:nodejs liumiao$

结果确认

  • 构建镜像确认
liumiaocn:nodejs liumiao$ docker images |grep nodejs |grep 8.6.0nodejs                                          8.6.0                           a850b7abb6ef        2 minutes ago       262MBliumiaocn:nodejs liumiao$
  • 版本确认
liumiaocn:nodejs liumiao$ docker run --rm nodejs:8.6.0 npm -v5.3.0liumiaocn:nodejs liumiao$ docker run --rm nodejs:8.6.0 node -vv8.6.0liumiaocn:nodejs liumiao$

easypack & dockerhub镜像

也可以直接使用easypack的nodejs的Dockerfile生成的镜像,size也更小。

在这里插入图片描述

转载地址:https://liumiaocn.blog.csdn.net/article/details/102616184 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Jenkins基础:使用NPM构建前端应用1: nodejs插件的安装与设定
下一篇:Alpine版的Jenkins插件的No such file or directory的解决方法

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月12日 22时57分52秒