提问人:merilstack 提问时间:11/9/2023 更新时间:11/9/2023 访问量:80
在 NodeJS 应用的 Docker 中将 curl 和 libcurl 更新到最新版本
Update curl and libcurl to latest version in Docker in NodeJS app
问:
Dockerfile
对于我的 NodeJS 应用程序,如下所示
FROM node:14-alpine AS build
# Install necessary packages using the 'apk' package manager
RUN apk update && \
apk add --no-cache wget build-base openssl-dev
# Install a more recent version of curl
RUN apk add --no-cache curl
# Set the source folder
ARG SOURCE_FOLDER="./"
ARG BUILD_VERSION
ARG NPM_TOKEN
# Create app directory
WORKDIR /var/www/app
# Bundle app source
COPY ${SOURCE_FOLDER} .
# Run the build.sh script
RUN chmod +x build.sh && ./build.sh
RUN NODE_OPTIONS=--max_old_space_size=4096 lsc build site --output-hashing all --buildVersion=$BUILD_VERSION && \
rm -f .npmrc
FROM app-base/docker-base
COPY --from=build /var/www/app/dist/ngx-rsc-app /var/www/app
我正在尝试使用以下命令安装最新版本的 curl 和 libcurl
RUN apk add --no-cache curl
但是当我进入我的容器并检查卷曲版本时
root@my-app:/var/www/app# curl --version
curl 7.74.0 (x86_64-pc-linux-gnu) libcurl/7.74.0 OpenSSL/1.1.1n zlib/1.2.11 brotli/1.0.9 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.3.0) libssh2/1.9.0 nghttp2/1.43.0 librtmp/2.3
Release-Date: 2020-12-09
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets
它显示而不是 .我应该如何将 curl 和 libcurl 升级到最新版本?curl 7.74.0
curl 8.4.0
8.4.0
答:
0赞
Hans Kilian
11/9/2023
#1
你使用的是多阶段 Dockerfile,并在第一阶段进行安装。该安装不会延续到最后阶段。curl
在最终图像中,有(至少)2种更新方法curl
- 您可以在映像中更新。那将
更新基础映像所有用户的 curl。
curl
app-base/docker-base
- 您可以在 Dockerfile 的最后阶段安装 8.4.0。如何执行此操作取决于映像中可用的包管理器。
curl
app-base/docker-base
1赞
Vinosh M G
11/9/2023
#2
若要升级到 Dockerfile 中的最新版本,有几个选项:curl
libcurl
- 在基础映像中更新
如前所述,您可以在用作最后阶段的图像中更新和更新。这样做的好处是可以升级使用该基础映像的所有映像,但需要更新基础映像。curl
libcurl
app-base/docker-base
- 在最后阶段安装
您可以安装 Dockerfile 的最新版本和最后阶段的版本。这只会升级该特定映像。curl
libcurl
由于您使用的是 Alpine Linux,因此可以运行:
RUN apk update \
&& apk add curl libcurl
这将从 Alpine 存储库安装最新的可用版本。
- 从 curl 的 Docker 镜像中提取
您可以直接从官方 Docker 镜像中拉取以获取最新版本:curl
FROM curl:latest
# Rest of Dockerfile...
这可确保您始终拥有绝对最新的和 .curl
libcurl
- 从源代码安装
作为最后的手段,您可以安装并从源代码获取特定版本。这更复杂,但可以让您完全控制。curl
libcurl
评论