节点 alpine 找不到 OPENSSL_ROOT_DIR(缺少:OPENSSL_CRYPTO_LIBRARY)

问题描述 投票:0回答:1

我正在尝试使用 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。

有什么建议吗?

node.js dockerfile alpine-linux
1个回答
0
投票

经过几次尝试,我设法通过添加来解决此问题:

RUN apk add --no-cache openssl-dev openssl-libs-static openssl1.1-compat 

致我的

Dockerfile

© www.soinside.com 2019 - 2024. All rights reserved.