持续构建:NodeJS的Alpine镜像
发布日期:2021-06-30 20:13:26
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月22日 11时08分46秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CodeForces - 629B Far Relative’s Problem(模拟)
2019-04-30
CodeForces - 1059B Forgery (思维)
2019-04-30
CodeForces - 456C Boredom (dp)
2019-04-30
CodeForces - 960B Minimize the error (思维,贪心)
2019-04-30
CodeForces - 97B Superset (思维/分治/构造)
2019-04-30
CodeForces - 675A Infinite Sequence(简单数论 细节)
2019-04-30
CodeForces - 1042B Vitamins (思维)
2019-04-30
ACM 2013 长沙区域赛 Alice's Print Service (二分 思维)
2019-04-30
ACM 2013 长沙区域赛 Collision (几何)
2019-04-30
CodeForces - 1064A Make a triangle! (简单模拟)
2019-04-30
51Nod - 1183 编辑距离 (dp)
2019-04-30
ACM 2014 鞍山区域赛 E - Hatsune Miku (dp)
2019-04-30
反向传播&梯度下降 的直观理解程序(numpy)
2019-04-30
CodeForces - 931B World Cup (思维 模拟)
2019-04-30
ACM 2018 青岛区域赛 J-Books (模拟)
2019-04-30
ACM 2016 沈阳区域赛 E - Counting Cliques (dfs)
2019-04-30
ACM 2017 北京区域赛 J-Pangu and Stones(区间dp)
2019-04-30