Node.jsの公式のDocker ImageでOpenSSL3を使うためのDockerfileを書きました。
ちなみに元々はPrismaで以下のエラーが出たための対処です。
Query engine library for current platform "debian-openssl-1.1.x" could not be found.
こちらは、Node.jsにはバージョン17以降はOpenSSL3がバンドルされているのに、システム側のOpenSSLが1.1で、バージョン不整合のため発生したエラーでした。
大変参考になった記事はこちら。
なので、こんな感じでNode.jsの公式のDocker ImageでOpenSSL 3をビルドしてインストールしました。
FROM node:19.7-bullseye-slim
RUN apt-get -qy update && apt-get -qy install build-essential checkinstall zlib1g-dev wget
WORKDIR /usr/local/src
RUN wget https://www.openssl.org/source/openssl-3.1.0.tar.gz && tar -xvzf openssl-3.1.0.tar.gz
WORKDIR /usr/local/src/openssl-3.1.0
RUN ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib && make && make install
RUN echo /usr/local/ssl/lib64 > /etc/ld.so.conf.d/openssl-3.1.0.conf
RUN ldconfig -v
RUN apt-get -qy remove openssl
ENV PATH "$PATH:/usr/local/ssl/bin"
WORKDIR /usr/local/src
RUN rm -rf openssl-3.1.0 openssl-3.1.0.tar.gz
そのうち公式でもOpenSSL 3がインストールされるはずですが、それまではこちらのDockerfileを使うことになりそうです。
参考になればどうぞ。