############################################################################### ## Builder ############################################################################### FROM alpine:3.18 as builder ENV POETRY_NO_INTERACTION=1 \ POETRY_VIRTUALENVS_IN_PROJECT=1 \ POETRY_VIRTUALENVS_CREATE=1 \ POETRY_CACHE_DIR=/tmp/poetry_cache RUN echo "**** install Python ****" && \ apk add --update --no-cache --virtual \ .build-deps \ gcc~=12.2 \ musl-dev~=1.2 \ python3-dev~=3.11 \ python3~=3.11 \ py3-pip~=23.1 && \ rm -rf /var/lib/apt/lists/* && \ echo "**** install Poetry ****" && \ pip install --no-cache-dir poetry==1.6.1 WORKDIR /app COPY pyproject.toml poetry.lock ./ RUN echo "**** install Python dependencies ****" && \ poetry install --without dev --no-root && rm -rf $POETRY_CACHE_DIR ############################################################################### ## Final image ############################################################################### FROM alpine:3.18 LABEL maintainer="Lorenzo Carbonell lorenzo.carbonell.cerezo@gmail.com" ENV VIRTUAL_ENV=/app/.venv \ PATH="/app/.venv/bin:$PATH" \ PYTHONIOENCODING=utf-8 \ PYTHONUNBUFFERED=1 \ USER=app \ UID=1000 RUN echo "**** install Python ****" && \ apk add --update --no-cache \ python3~=3.11 && \ rm -rf /var/lib/apt/lists/* COPY --from=builder ${VIRTUAL_ENV} ${VIRTUAL_ENV} COPY run.sh ./broker /app/ RUN adduser \ --disabled-password \ --gecos "" \ --home "/${USER}" \ --shell "/sbin/nologin" \ --uid "${UID}" \ "${USER}" && \ chown -R app:app /app WORKDIR /app USER app