镜像概述和主要用途
buildpack-deps 是一个包含常见构建依赖项的Docker镜像集合,用于安装各种模块(如gems、npm包、PyPI模块等)。其设计理念类似于Heroku的stack镜像,包含大量"开发头文件"包,使各种构建过程能够顺利完成,而无需预先知道特定依赖项。
注意:这是 buildpack-deps 官方镜像的 riscv64 架构版本。有关更多信息,请参阅官方镜像文档中的 https://github.com/docker-library/official-images#architectures-other-than-amd64 和官方镜像FAQ中的 https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what%E3%80%82
核心功能和特性
包含内容
完整版本
主要标签提供完整的依赖项集合,大多数 gem install / npm install / pip install 命令无需额外的头文件/开发包即可成功执行。
curl 变体
包含 curl、wget 和 ca-certificates 包,适用于需要下载文件但不需要源代码控制工具的场景。
scm 变体
基于 curl 变体构建,额外添加了源代码控制管理工具,包括 bzr、git、hg 和 svn(不包含 cvs)。适用于需要下载文件和检出代码的场景。
支持的标签和对应的 Dockerfile 链接
- https://github.com/docker-library/buildpack-deps/blob/6fbd1fd6aa***b10f11a97c31b9da1ac09db76/debian/forky/curl/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/6fbd1fd6aa***b10f11a97c31b9da1ac09db76/debian/forky/scm/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/6fbd1fd6aa***b10f11a97c31b9da1ac09db76/debian/forky/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/2b3a8b7d1f8875865034be3bab98ddd737e37d5e/debian/sid/curl/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/2b3a8b7d1f8875865034be3bab98ddd737e37d5e/debian/sid/scm/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/2b3a8b7d1f8875865034be3bab98ddd737e37d5e/debian/sid/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/1f4fe499c668d9a2e1578aa8db4f0b2d***cf5/debian/trixie/curl/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/1f4fe499c668d9a2e1578aa8db4f0b2d***cf5/debian/trixie/scm/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/1f4fe499c668d9a2e1578aa8db4f0b2d***cf5/debian/trixie/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/93d6db0797f91ab674535553b7e0e762941a02d0/ubuntu/jammy/curl/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/ubuntu/jammy/scm/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/ubuntu/jammy/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/60dc5f9555c521de086b2f5770514faf69ee2cc4/ubuntu/noble/curl/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/60dc5f9555c521de086b2f5770514faf69ee2cc4/ubuntu/noble/scm/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/60dc5f9555c521de086b2f5770514faf69ee2cc4/ubuntu/noble/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/ab3ae04e943ecb240a9691dfa1de219b4a3e32a0/ubuntu/plucky/curl/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/ab3ae04e943ecb240a9691dfa1de219b4a3e32a0/ubuntu/plucky/scm/Dockerfile
- https://github.com/docker-library/buildpack-deps/blob/ab3ae04e943ecb240a9691dfa1de219b4a3e32a0/ubuntu/plucky/Dockerfile
使用场景和适用范围
buildpack-deps 主要用作语言栈镜像的基础,适用于以下场景:
- 开发环境:为各种语言开发提供统一的构建环境
- CI/CD 流程:在持续集成/部署过程中作为构建阶段的基础镜像
- 镜像构建:作为其他Docker镜像的基础,提供必要的构建依赖
不同变体适用于不同需求:
curl 变体:适用于仅需要下载文件的场景(如Java JRE)
scm 变体:适用于需要下载文件和版本控制的场景(如Java JDK)
- 完整版本:适用于需要大量构建依赖的语言栈(如Ruby、Python、Node.js)
详细的使用方法和配置说明
作为基础镜像使用
buildpack-deps 通常用作Dockerfile中的基础镜像:
dockerfile
# 使用完整版本
FROM riscv64/buildpack-deps:latest
# 安装特定语言和依赖
RUN apt-get update && apt-get install -y python3 && rm -rf /var/lib/apt/lists/*
# 设置工作目录
WORKDIR /app
# 复制应用代码并构建
COPY . .
RUN pip3 install -r requirements.txt
CMD ["python3", "app.py"]
使用curl变体
dockerfile
# 使用curl变体
FROM riscv64/buildpack-deps:curl
# 仅需要下载文件的场景
WORKDIR /app
RUN curl -O https://example.com/some-file.jar
CMD ["java", "-jar", "some-file.jar"]
使用scm变体
dockerfile
# 使用scm变体
FROM riscv64/buildpack-deps:scm
# 需要检出代码的场景
WORKDIR /app
RUN git clone https://github.com/example/some-repo.git .
# 构建应用
RUN ./build.sh
CMD ["./run.sh"]
直接运行容器
虽然主要用作基础镜像,也可以直接运行容器进行临时构建任务:
bash
# 运行完整版本
docker run -it --rm riscv64/buildpack-deps:latest /bin/bash
# 运行scm变体
docker run -it --rm riscv64/buildpack-deps:scm /bin/bash
支持的架构
- https://hub.docker.com/r/amd64/buildpack-deps/
- https://hub.docker.com/r/arm32v5/buildpack-deps/
- https://hub.docker.com/r/arm32v7/buildpack-deps/
- https://hub.docker.com/r/arm64v8/buildpack-deps/
- https://hub.docker.com/r/i386/buildpack-deps/
- https://hub.docker.com/r/mips64le/buildpack-deps/
- https://hub.docker.com/r/ppc64le/buildpack-deps/
- https://hub.docker.com/r/riscv64/buildpack-deps/
- https://hub.docker.com/r/s390x/buildpack-deps/
维护和支持
- 维护者:https://github.com/docker-library/buildpack-deps
- 获取帮助:Docker社区Slack、Server Fault、Unix & Linux 或 Stack Overflow
- 问题反馈:https://github.com/docker-library/buildpack-deps/issues?q=
- 镜像更新:https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fbuildpack-deps
许可证
查看此镜像中包含的软件的许可证信息。
与所有Docker镜像一样,这些镜像可能还包含其他软件,这些软件可能具有其他许可证(如基础发行版中的Bash等,以及包含的主要软件的任何直接或间接依赖项)。
一些能够自动检测到的其他许可证信息可能会在https://github.com/docker-library/repo-info/tree/master/repos/buildpack-deps%E4%B8%AD%E6%89%BE%E5%88%B0%E3%80%82
对于任何预构建镜像的使用,镜像用户有责任确保对该镜像的任何使用符合其中包含的所有软件的相关许可证。