From df62cb8f15c0f6161304d3f65cd08abaff96214b Mon Sep 17 00:00:00 2001 From: Renon Date: Mon, 9 Mar 2020 17:04:06 +0100 Subject: [PATCH] Remove build dependencies to lighten docker image --- api/Dockerfile | 39 +++++++++++++------ .../docker-reduced-size.enhancement | 1 + 2 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 changes/changelog.d/docker-reduced-size.enhancement diff --git a/api/Dockerfile b/api/Dockerfile index 7a8526e83..d19bc602f 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,37 +1,34 @@ -FROM alpine:3.10 +FROM alpine:3.10 as builder RUN \ echo 'installing dependencies' && \ - apk add --no-cache \ - bash \ + apk add --no-cache \ git \ - gettext \ musl-dev \ gcc \ postgresql-dev \ python3-dev \ py3-psycopg2 \ - py3-pillow \ libldap \ - ffmpeg \ - libpq \ - libmagic \ libffi-dev \ make \ zlib-dev \ + jpeg-dev \ openldap-dev \ && \ \ ln -s /usr/bin/python3 /usr/bin/python +# create virtual env for next stage +RUN python -m venv /venv +# emulate activation by prefixing PATH +ENV PATH="/venv/bin:$PATH" VIRTUAL_ENV=/venv + RUN mkdir /requirements COPY ./requirements/base.txt /requirements/base.txt # hack around https://github.com/pypa/pip/issues/6158#issuecomment-456619072 ENV PIP_DOWNLOAD_CACHE=/noop/ RUN \ - echo 'fixing requirements file for alpine' && \ - sed -i '/Pillow/d' /requirements/base.txt && \ - \ echo 'installing pip requirements' && \ pip3 install --upgrade pip && \ pip3 install setuptools wheel && \ @@ -43,6 +40,26 @@ COPY ./requirements/*.txt /requirements/ RUN \ if [ "$install_dev_deps" = "1" ] ; then echo "Installing dev dependencies" && pip3 install --no-cache-dir -r /requirements/local.txt -r /requirements/test.txt ; else echo "Skipping dev deps installation" ; fi + +FROM alpine:3.10 as build-image + +COPY --from=builder /venv /venv +# emulate activation by prefixing PATH +ENV PATH="/venv/bin:$PATH" + +RUN apk add --no-cache \ + libmagic \ + bash \ + gettext \ + python3 \ + jpeg-dev \ + ffmpeg \ + libpq \ + && \ + \ + ln -s /usr/bin/python3 /usr/bin/python + + ENTRYPOINT ["./compose/django/entrypoint.sh"] CMD ["./compose/django/server.sh"] diff --git a/changes/changelog.d/docker-reduced-size.enhancement b/changes/changelog.d/docker-reduced-size.enhancement new file mode 100644 index 000000000..1565d94ee --- /dev/null +++ b/changes/changelog.d/docker-reduced-size.enhancement @@ -0,0 +1 @@ +Reduced size of funkwhale/funkwhale docker images thanks to multi-stage builds (!1042)