我正在尝试使用 node:lts-alpine 设置 docker 文件,如下所示:
# FROM node:20.11.1-buster-slim
FROM node:lts-alpine
# Set environment variables
ENV ALLOW_CONFIG_MUTATIONS true
ENV DEBUG "libp2p:tcp,libp2p:websockets,libp2p:webtransport,libp2p:kad-dht,libp2p:dialer"
ENV OPENSSL_ROOT_DIR=/usr/include/openssl
ENV OPENSSL_LIB_DIR=/usr/lib
# Expose the required ports
EXPOSE 7002 7012
# Set the working directory
WORKDIR /usr/src/app
# Copy dependancies tree
COPY package*.json ./
# Install CMake, build tools, C++ compiler, Python3, and OpenSSL
RUN apk add --no-cache --virtual .build-deps alpine-sdk cmake python3 openssl-dev
# Optionally, you can remove the build dependencies later if they are no longer needed
# && apk del .build-deps
# Install the dependancies
RUN npm install
COPY . .
# Command to run on container startup
CMD ["npm", "start"]
但是我收到错误:
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
137.3 npm ERR! Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
137.3 npm ERR! system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found
137.3 npm ERR! version "3.1.4")
137.3 npm ERR! Call Stack (most recent call first):
137.3 npm ERR! /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
137.3 npm ERR! /usr/share/cmake/Modules/FindOpenSSL.cmake:668 (find_package_handle_standard_args)
137.3 npm ERR! CMakeLists.txt:29 (find_package)
我尝试运行高山图像并寻找路径,它们看起来很好:
Unable to find image 'node:lts-alpine' locally
lts-alpine: Pulling from library/node
4abcf2066143: Already exists
9f16480e2ff5: Already exists
092226d52cac: Already exists
0493dfb2ff9c: Already exists
Digest: sha256:bf77dc26e48ea95fca9d1aceb5acfa69d2e546b765ec2abfb502975f1a2d4def
Status: Downloaded newer image for node:lts-alpine
/ # apk update && apk add openssl-dev
fetch https://dl-cdn.alpinelinux.org/alpine/v3.19/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.19/community/x86_64/APKINDEX.tar.gz
v3.19.1-268-g03ce30a82dd [https://dl-cdn.alpinelinux.org/alpine/v3.19/main]
v3.19.1-270-g475f8d7e93f [https://dl-cdn.alpinelinux.org/alpine/v3.19/community]
OK: 22990 distinct packages available
(1/2) Installing pkgconf (2.1.0-r0)
(2/2) Installing openssl-dev (3.1.4-r5)
Executing busybox-1.36.1-r15.trigger
OK: 12 MiB in 19 packages
/ # find / -type f -name "libssl.so*" -o -name "libcrypto.so*"
/usr/lib/libcrypto.so.3
/usr/lib/libcrypto.so
/lib/libcrypto.so.3
/lib/libssl.so.3
/ #
/ # find / -type d -name "openssl"
/usr/local/include/node/openssl
/usr/local/include/node/openssl/archs/linux-x86_64/asm/include/openssl
/usr/local/include/node/openssl/archs/linux-x86_64/asm_avx2/include/openssl
/usr/local/include/node/openssl/archs/linux-x86_64/no-asm/include/openssl
/usr/include/openssl
正如您在上面所看到的,我已经尝试过使用node:20.11.1-buster-slim,它工作得很好,不需要添加任何额外的包,但生成的图像约为600MB。我正在尝试使用 alpine 生成较小的图像,但我无法使其识别 openssl。
有什么建议吗?
经过几次尝试,我设法通过添加来解决此问题:
RUN apk add --no-cache openssl-dev openssl-libs-static openssl1.1-compat
致我的
Dockerfile