Pergunta em questão: se eu precisar copiar centenas de bibliotecas de dependências entre compilações de estágios no Docker, como faço isso sem atingir a profundidade máxima?
O que estou tentando fazer: criar uma imagem de contêiner tão pequena quanto possível contendo Python e ffmpeg para uso com o AWS Lambda.
O que eu sei que posso fazer:
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"]
Produz uma imagem de contêiner funcional, mas é enorme, mais de 1 GB.
Gostaria de copiar apenas o ffmpeg e suas dependências, mas esse é o problema. ldd
me diz que há mais de 200 dependências em /lib, e ter tantas COPY
instruções leva a exceder a profundidade máxima durante a compilação. Tentando evitar:
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
Existe uma maneira de fazer um loop dentro do Dockerfile a partir de um arquivo txt externo ou algum outro mecanismo para copiar centenas de dependências sem exceder a profundidade máxima?