Skip to content

Commit

Permalink
Update Dockerfile (#571)
Browse files Browse the repository at this point in the history
* Use multi-stage build to reduce image size
* Add ARGS to be more flexible during image builds
* Create user and use it instead of root
* Don't update pip in container. The Python image should have a recent
  version
  • Loading branch information
phibos authored Oct 24, 2024
1 parent 92b12ea commit ab280d7
Showing 1 changed file with 27 additions and 4 deletions.
31 changes: 27 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,35 @@
FROM python:3.9-slim
ARG BASE_IMAGE=python:3.9-slim
ARG USERNAME=parsedmarc
ARG USER_UID=1000
ARG USER_GID=$USER_UID

## build

FROM $BASE_IMAGE AS build

WORKDIR /app

RUN pip install hatch

COPY parsedmarc/ parsedmarc/
COPY README.md pyproject.toml ./

RUN pip install -U pip
RUN pip install hatch
RUN hatch build
RUN pip install dist/*.whl

## image

FROM $BASE_IMAGE
ARG USERNAME
ARG USER_UID
ARG USER_GID

COPY --from=build /app/dist/*.whl /tmp/dist/
RUN set -ex; \
groupadd --gid ${USER_GID} ${USERNAME}; \
useradd --uid ${USER_UID} --gid ${USER_GID} -m ${USERNAME}; \
pip install /tmp/dist/*.whl; \
rm -rf /tmp/dist

USER $USERNAME

ENTRYPOINT ["parsedmarc"]

0 comments on commit ab280d7

Please sign in to comment.