当前的问题是:如果我需要在 Docker 中的阶段构建之间复制数百个依赖库,那么如何在不达到最大深度的情况下完成此操作?
我最终想要做的是:构建一个尽可能小的包含 python 和 ffmpeg 的容器映像,以供 AWS Lambda 使用。
我知道我能做的是:
FROM ubuntu:latest AS build
RUN apt-get update && apt-get clean && apt-get install -y ffmpeg
FROM python:3.12-slim-bookworm
COPY --from=build /usr/bin/ffmpeg /usr/bin/ffmpeg
COPY --from=build /usr/lib/aarch64-linux-gnu/* /usr/lib/aarch64-linux-gnu/
WORKDIR /app
CMD ["foo"]
生成一个有效的容器镜像,但是它非常大,超过 1 GB。
我想复制 ffmpeg 及其依赖项,但这就是问题所在。ldd
告诉我 /lib 中有超过 200 个依赖项,并且有这么多COPY
语句会导致在构建期间超出最大深度。尝试避免:
COPY --from=build /usr/lib/lib1 /usr/lib/lib1
COPY --from=build /usr/lib/lib2 /usr/lib/lib2
...
COPY --from=build /usr/lib/lib227 /usr/lib/lib227
有没有办法从外部 txt 文件循环进入 Dockerfile,或者其他机制来复制数百个依赖项而不超出最大深度?