Per upstream's release chart, NodeJS 18 is now in maintenance mode; NodeJS 20 is LTS until October, and NodeJS 22 comes out next week (2024-04-23).
Would it be possible to provide nodejs20-slim and nodejs20-devel production base images?
Per upstream's release chart, NodeJS 18 is now in maintenance mode; NodeJS 20 is LTS until October, and NodeJS 22 comes out next week (2024-04-23).
Would it be possible to provide nodejs20-slim and nodejs20-devel production base images?
| Status | Subtype | Assigned | Task | ||
|---|---|---|---|---|---|
| Open | None | T364779 Migrate node-based services in production to node20 | |||
| Resolved | MoritzMuehlenhoff | T362681 Provide nodejs20 base images for production |
nodejs20 isn't even on trixie/sid right now https://packages.debian.org/trixie/nodejs, https://packages.debian.org/sid/nodejs but only in experimental.
I am adding @MoritzMuehlenhoff to advise. Since we bring in nodejs via https://deb.nodesource.com/ in some cases in our repos, it might be doable.
That's not problem. We should just use the nodesource packages for this, we've been doing the same for "intermediate LTSes" before (e.g. node 16 or node 14) not covered by an intree Debian nodejs version. I'll work on this next week.
Change #1024663 had a related patch set uploaded (by Muehlenhoff; author: Muehlenhoff):
[operations/puppet@production] aptrepo: Add new repository component and repo sync config for Node 20
Change #1024663 merged by Muehlenhoff:
[operations/puppet@production] aptrepo: Add new repository component and repo sync config for Node 20
Change #1026873 had a related patch set uploaded (by Muehlenhoff; author: Muehlenhoff):
[operations/docker-images/production-images@master] Add node20 production image
Mentioned in SAL (#wikimedia-operations) [2024-05-07T15:19:38Z] <moritzm> imported nodejs 20.5.1-deb-1nodesource1 to thirdparty/node20 T362681
Change #1026873 merged by Muehlenhoff:
[operations/docker-images/production-images@master] Add node20 production image
I kicked off a build of the node20 image, it should hopefully appear in the registry soon.
It seems the image has some issues with dependencies. See: https://integration.wikimedia.org/ci/job/cxserver-pipeline-test/582/console cc @MoritzMuehlenhoff
Despite being named -slim it includes npm; don't try to re-install it, and it works fine.
Do we know what libraries are included in the node20 image vs the node18 one? I recently had to install libssl-dev to get a service working on node20.
You can find that with this:
$ podman run --rm -it --entrypoint dpkg docker-registry.wikimedia.org/nodejs20-slim:0.0.1-20250209 -l Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-===========================-=======================-============-======================================================================== ii adduser 3.134 all add and remove users and groups ii apt 2.6.1 amd64 commandline package manager ii base-files 12.4+deb12u9 amd64 Debian base system miscellaneous files ii base-passwd 3.6.1 amd64 Debian base system master password and group files ii bash 5.2.15-2+b7 amd64 GNU Bourne Again SHell ii bsdutils 1:2.38.1-5+deb12u3 amd64 basic utilities from 4.4BSD-Lite ii ca-certificates 20230311 all Common CA certificates ii coreutils 9.1-1 amd64 GNU core utilities ii dash 0.5.12-2 amd64 POSIX-compliant shell ii debconf 1.5.82 all Debian configuration management system ii debian-archive-keyring 2023.3+deb12u1 all GnuPG archive keys of the Debian archive ii debianutils 5.7-0.5~deb12u1 amd64 Miscellaneous utilities specific to Debian ii diffutils 1:3.8-4 amd64 File comparison utilities ii dpkg 1.21.22 amd64 Debian package management system ii e2fsprogs 1.47.0-2 amd64 ext2/ext3/ext4 file system utilities ii findutils 4.9.0-4 amd64 utilities for finding files--find, xargs ii gcc-12-base:amd64 12.2.0-14 amd64 GCC, the GNU Compiler Collection (base package) ii gpgv 2.2.40-1.1 amd64 GNU privacy guard - signature verification tool ii grep 3.8-5 amd64 GNU grep, egrep and fgrep ii gzip 1.12-1 amd64 GNU compression utilities ii hostname 3.23+nmu1 amd64 utility to set/show the host name or domain name ii init-system-helpers 1.65.2 all helper tools for all init systems ii libacl1:amd64 2.3.1-3 amd64 access control list - shared library ii libapt-pkg6.0:amd64 2.6.1 amd64 package management runtime library ii libattr1:amd64 1:2.5.1-4 amd64 extended attribute handling - shared library ii libaudit-common 1:3.0.9-1 all Dynamic library for security auditing - common files ii libaudit1:amd64 1:3.0.9-1 amd64 Dynamic library for security auditing ii libblkid1:amd64 2.38.1-5+deb12u3 amd64 block device ID library ii libbz2-1.0:amd64 1.0.8-5+b1 amd64 high-quality block-sorting file compressor library - runtime ii libc-bin 2.36-9+deb12u9 amd64 GNU C Library: Binaries ii libc6:amd64 2.36-9+deb12u9 amd64 GNU C Library: Shared libraries ii libcap-ng0:amd64 0.8.3-1+b3 amd64 alternate POSIX capabilities library ii libcap2:amd64 1:2.66-4 amd64 POSIX 1003.1e capabilities (library) ii libcom-err2:amd64 1.47.0-2 amd64 common error description library ii libcrypt1:amd64 1:4.4.33-2 amd64 libcrypt shared library ii libdb5.3:amd64 5.3.28+dfsg2-1 amd64 Berkeley v5.3 Database Libraries [runtime] ii libdebconfclient0:amd64 0.270 amd64 Debian Configuration Management System (C-implementation library) ii libexpat1:amd64 2.5.0-1+deb12u1 amd64 XML parsing C library - runtime library ii libext2fs2:amd64 1.47.0-2 amd64 ext2/ext3/ext4 file system libraries ii libffi8:amd64 3.4.4-1 amd64 Foreign Function Interface library runtime ii libgcc-s1:amd64 12.2.0-14 amd64 GCC support library ii libgcrypt20:amd64 1.10.1-3 amd64 LGPL Crypto library - runtime library ii libgmp10:amd64 2:6.2.1+dfsg1-1.1 amd64 Multiprecision arithmetic library ii libgnutls30:amd64 3.7.9-2+deb12u3 amd64 GNU TLS library - main runtime library ii libgpg-error0:amd64 1.46-1 amd64 GnuPG development runtime library ii libhogweed6:amd64 3.8.1-2 amd64 low level cryptographic library (public-key cryptos) ii libidn2-0:amd64 2.3.3-1+b1 amd64 Internationalized domain names (IDNA2008/TR46) library ii liblz4-1:amd64 1.9.4-1 amd64 Fast LZ compression algorithm library - runtime ii liblzma5:amd64 5.4.1-0.2 amd64 XZ-format compression library ii libmd0:amd64 1.0.4-2 amd64 message digest functions from BSD systems - shared library ii libmount1:amd64 2.38.1-5+deb12u3 amd64 device mounting library ii libnettle8:amd64 3.8.1-2 amd64 low level cryptographic library (symmetric and one-way cryptos) ii libp11-kit0:amd64 0.24.1-2 amd64 library for loading and coordinating access to PKCS#11 modules - runtime ii libpam-modules:amd64 1.5.2-6+deb12u1 amd64 Pluggable Authentication Modules for PAM ii libpam-modules-bin 1.5.2-6+deb12u1 amd64 Pluggable Authentication Modules for PAM - helper binaries ii libpam-runtime 1.5.2-6+deb12u1 all Runtime support for the PAM library ii libpam0g:amd64 1.5.2-6+deb12u1 amd64 Pluggable Authentication Modules library ii libpcre2-8-0:amd64 10.42-1 amd64 New Perl Compatible Regular Expression Library- 8 bit runtime files ii libpython3.11-minimal:amd64 3.11.2-6+deb12u5 amd64 Minimal subset of the Python language (version 3.11) ii libseccomp2:amd64 2.5.4-1+deb12u1 amd64 high level interface to Linux seccomp filter ii libselinux1:amd64 3.4-1+b6 amd64 SELinux runtime shared libraries ii libsemanage-common 3.4-1 all Common files for SELinux policy management libraries ii libsemanage2:amd64 3.4-1+b5 amd64 SELinux policy management library ii libsepol2:amd64 3.4-2.1 amd64 SELinux library for manipulating binary security policies ii libsmartcols1:amd64 2.38.1-5+deb12u3 amd64 smart column output alignment library ii libss2:amd64 1.47.0-2 amd64 command-line interface parsing library ii libssl3:amd64 3.0.15-1~deb12u1 amd64 Secure Sockets Layer toolkit - shared libraries ii libstdc++6:amd64 12.2.0-14 amd64 GNU Standard C++ Library v3 ii libsystemd0:amd64 252.33-1~deb12u1 amd64 systemd utility library ii libtasn1-6:amd64 4.19.0-2 amd64 Manage ASN.1 structures (runtime) ii libtinfo6:amd64 6.4-4 amd64 shared low-level terminfo library for terminal handling ii libudev1:amd64 252.33-1~deb12u1 amd64 libudev shared library ii libunistring2:amd64 1.0-2 amd64 Unicode string library for C ii libuuid1:amd64 2.38.1-5+deb12u3 amd64 Universally Unique ID library ii libxxhash0:amd64 0.8.1-1 amd64 shared library for xxhash ii libzstd1:amd64 1.5.4+dfsg2-5 amd64 fast lossless compression algorithm ii login 1:4.13+dfsg1-1+b1 amd64 system login tools ii logsave 1.47.0-2 amd64 save the output of a command in a log file ii mawk 1.3.4.20200120-3.1 amd64 Pattern scanning and text processing language ii mount 2.38.1-5+deb12u3 amd64 tools for mounting and manipulating filesystems ii ncurses-base 6.4-4 all basic terminal type definitions ii ncurses-bin 6.4-4 amd64 terminal-related programs and man pages ii nodejs 20.5.1-deb-1nodesource1 amd64 Node.js event-based server-side javascript engine ii openssl 3.0.15-1~deb12u1 amd64 Secure Sockets Layer toolkit - cryptographic utility ii passwd 1:4.13+dfsg1-1+b1 amd64 change and administer password and group data ii perl-base 5.36.0-7+deb12u1 amd64 minimal Perl system ii python3-minimal 3.11.2-1+b1 amd64 minimal subset of the Python language (default python3 version) ii python3.11-minimal 3.11.2-6+deb12u5 amd64 Minimal subset of the Python language (version 3.11) ii sed 4.9-1 amd64 GNU stream editor for filtering/transforming text ii sysvinit-utils 3.06-4 amd64 System-V-like utilities ii tar 1.34+dfsg-1.2+deb12u1 amd64 GNU version of the tar archiving utility ii tzdata 2024b-0+deb12u1 all time zone and daylight-saving time data ii usr-is-merged 37~deb12u1 all Transitional package to assert a merged-/usr system ii util-linux 2.38.1-5+deb12u3 amd64 miscellaneous system utilities ii util-linux-extra 2.38.1-5+deb12u3 amd64 interactive login tools ii wmf-certificates 0~20231120 all WMF internal CA bundles. ii zlib1g:amd64 1:1.2.13.dfsg-1 amd64 compression library - runtime
You can replace podman with docker if you have docker and not podman. The rest of the command is identical