ストーリー
Dockerイメージで作ったコンテナ内で, Parcelを使ったファイルのバンドルを行おうとすると、
Error: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.29' not found (required by /usr/local/share/.config/yarn/global/node_modules/@parcel/rust/parcel-node-bindings.linux-arm64-gnu.node)
at Module._extensions..node (node:internal/modules/cjs/loader:1327:18)
at Module.load (node:internal/modules/cjs/loader:1091:32)
at Module._load (node:internal/modules/cjs/loader:938:12)
at Module.require (node:internal/modules/cjs/loader:1115:19)
at require (node:internal/modules/helpers:130:18)
at Object.<anonymous> (/usr/local/share/.config/yarn/global/node_modules/@parcel/rust/index.js:217:31)
at Module._compile (node:internal/modules/cjs/loader:1241:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
at Module.load (node:internal/modules/cjs/loader:1091:32)
at Module._load (node:internal/modules/cjs/loader:938:12) {
code: 'ERR_DLOPEN_FAILED'
}
といったエラーが生じてしまい、ファイルのバンドルができない。
状況
Dockerfile
FROM node:20.9-buster-slim
RUN apt update && apt install -y zip
WORKDIR /app
COPY package.json tsconfig.json /app/
COPY yarn.lock /app
RUN yarn global add typescript parcel
RUN yarn
COPY ./src /app/src
CMD ["yarn", "watch"]
上記Dockerfileを元に作ったイメージで作成したコンテナ内で npx parcel
を実行すると、上記のエラーが発生する。
解決策
bullseye のnode(version <= 20)イメージを使用する。
DebianReleasesの情報によると、それぞれDebian GNU/Linuxのディストリビューションであり、
Buster for Debian 10
URL: https://wiki.debian.org/DebianBuster
Buster is the development codename for Debian 10. It was superseded by Debian Bullseye on 2021-08-14.
と書いてある。
上記のエラーの
Error: /lib/aarch64-linux-gnu/libc.so.6: version 'GLIBC_2.29' not found
によると、buster
にはGLIBC_2.29
が存在しなさそう。
https://packages.debian.org/search?keywords=libc6
を見ると、
と書いており、buster
は 2.28まで対応、bullseye
は2.31まで対応可能。
ということでイメージを bullseye
に変えると動く。