Implemented a multi-stage Dockerfile to reduce the final image size by removing build dependencies.

This commit is contained in:
Paul Gauthier (aider) 2024-07-09 18:06:54 +01:00
parent 6c437c0d7a
commit 60ad0dee25

View file

@ -1,14 +1,21 @@
FROM python:3.10-slim
# Build stage
FROM python:3.10-slim AS builder
COPY . /aider
# Unfortunately to build the multi-arch docker image we need `build-essential` for amd64.
# Apparently py-tree-sitter-languages doesn't have a pre-built binary wheel?
RUN apt-get update && \
apt-get install --no-install-recommends -y build-essential git libportaudio2 && \
apt-get install --no-install-recommends -y build-essential git && \
rm -rf /var/lib/apt/lists/* && \
pip install --no-cache-dir /aider && \
rm -rf /aider
# Final stage
FROM python:3.10-slim
RUN apt-get update && \
apt-get install --no-install-recommends -y git libportaudio2 && \
rm -rf /var/lib/apt/lists/*
COPY --from=builder /usr/local/lib/python3.10/site-packages /usr/local/lib/python3.10/site-packages
COPY --from=builder /usr/local/bin/aider /usr/local/bin/aider
WORKDIR /app
ENTRYPOINT ["aider"]