如何构建基于Alpine的NodeJS镜像
发布日期:2021-06-30 20:13:23
浏览次数:2
分类:技术文章
本文共 2275 字,大约阅读时间需要 7 分钟。
NodeJS的运行需要libc的支持,而基于musl的Alpine镜像显然不能符合这个要求。在前面的文章中也验证过,目前使用社区对于Alpine镜像的glibc的粗暴支持方案,是无法直接安装后解决NodeJS使用问题的,依然会提示env: ‘node’: No such file or directory的问题。而Alpine中自带的nodejs则没有这个问题。
Alpine中NodeJS包的版本查询
nodejs包
在Alpine中为了使用node命令,则需要安装Alpine的nodejs包,支持的相应的nodejs的版本如下所示
npm包
在Alpine中为了使用npm命令,则需要安装Alpine的npm包,支持的相应的npm的版本如下所示
构建镜像
Dockerfile
准备如下的Dockerfile即可构建基于Alpine的NodeJS镜像。
liumiaocn:nodejs liumiao$ cat Dockerfile FROM alpine:3.10.2RUN apk add --no-cache npm \ && apk add --no-cache nodejsliumiaocn:nodejs liumiao$
构建镜像
使用上述Dockerfile进行docker build生成nodejs的镜像,执行日志如下所示
liumiaocn:nodejs liumiao$ docker build -t nodejs:latest .Sending build context to Docker daemon 2.048kBStep 1/2 : FROM alpine:3.10.2 ---> 961769676411Step 2/2 : RUN apk add --no-cache npm && apk add --no-cache nodejs ---> Running in c0c2df8380fbfetch 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/8) Installing ca-certificates (20190108-r0)(2/8) Installing c-ares (1.15.0-r0)(3/8) Installing libgcc (8.3.0-r0)(4/8) Installing http-parser (2.9.2-r0)(5/8) Installing libstdc++ (8.3.0-r0)(6/8) Installing libuv (1.29.1-r0)(7/8) Installing nodejs (10.16.3-r0)(8/8) Installing npm (10.16.3-r0)Executing busybox-1.30.1-r2.triggerExecuting ca-certificates-20190108-r0.triggerOK: 59 MiB in 22 packagesfetch 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.gzOK: 59 MiB in 22 packagesRemoving intermediate container c0c2df8380fb ---> e7e0a4a947bdSuccessfully built e7e0a4a947bdSuccessfully tagged nodejs:latestliumiaocn:nodejs liumiao$
执行完成之后发现此镜像大概49.5M左右
liumiaocn:nodejs liumiao$ docker images |grep nodejs |grep latestnodejs latest e7e0a4a947bd Less than a second ago 49.5MBliumiaocn:nodejs liumiao$
版本确认
启动此NodeJS容器并确认版本
liumiaocn:nodejs liumiao$ docker run --rm -it nodejs sh/ # node -vv10.16.3/ # npm -v6.9.0/ #
限制
但是这种方式无法支持nodejs和npm的各种版本,如果开发者对版本没有特定的要求,可以使用这种方式,但是如果有需求,而这个版本又无法通过apk add来进行安装,由于官方的NodeJS并未提供相应的基于musl编译的二进制包,如果又不希望放弃Alpine,仅存的不多的选择就是通过源码进行编译来构建NodeJS镜像了。
参考内容
https://pkgs.alpinelinux.org
转载地址:https://liumiaocn.blog.csdn.net/article/details/102595065 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年05月04日 14时14分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
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
ACM 2017 南宁区域赛 Rake it in(对抗搜索)
2019-04-30
CodeForces - 931B World Cup (思维 模拟)
2019-04-30
CodeForces - 996D Suit and Tie (暴力)
2019-04-30
ACM 2017 香港区域赛 E - Base Station Sites(二分)
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
HDU - 5643 King's Game (约瑟夫环变式)
2019-04-30
UVA - 1452 Jump (约瑟夫环变式)
2019-04-30
POJ - 3517 And Then There Was One (约瑟夫环变式)
2019-04-30
HDU - 2068 RPG的错排 (错排+组合数)
2019-04-30