initial commit
This commit is contained in:
48
template/{{ _Dockerfile_ if docker_repository }}.jinja
Normal file
48
template/{{ _Dockerfile_ if docker_repository }}.jinja
Normal file
@@ -0,0 +1,48 @@
|
||||
FROM registry-redhat.docker.bin.sbb.ch/rhel9/python-{{ python_version.replace(".", "") }} AS base
|
||||
|
||||
ENV PYTHONFAULTHANDLER=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
PYTHONHASHSEED=random \
|
||||
PIP_NO_CACHE_DIR=off \
|
||||
PIP_DISABLE_PIP_VERSION_CHECK=on \
|
||||
PIP_DEFAULT_TIMEOUT=100
|
||||
|
||||
# need to be root in order to install packages
|
||||
USER 0
|
||||
|
||||
# install necessary system dependencies here using `RUN dnf install -y <mypackage> && dnf clean all`
|
||||
# for installable packages, see: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/package_manifest/index#doc-wrapper
|
||||
|
||||
FROM base AS builder
|
||||
|
||||
ENV POETRY_PATH="/opt/poetry" \
|
||||
POETRY_VERSION="2.2.1" \
|
||||
POETRY_VIRTUALENVS_IN_PROJECT=true
|
||||
|
||||
ENV PATH="$POETRY_PATH/bin:$PATH"
|
||||
|
||||
RUN python -m venv $POETRY_PATH && \
|
||||
$POETRY_PATH/bin/pip install poetry==$POETRY_VERSION
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Initialize environment with packages
|
||||
COPY README.md pyproject.toml poetry.lock ./
|
||||
RUN poetry env use {{ python_version }} && \
|
||||
poetry install --without dev --no-interaction --no-ansi --no-root
|
||||
|
||||
# Add project source code
|
||||
COPY src/ ./src/
|
||||
RUN poetry build -f wheel
|
||||
RUN poetry run pip install dist/*.whl
|
||||
|
||||
FROM base AS final
|
||||
|
||||
# switch back to a non-root user for executing
|
||||
USER 1001
|
||||
|
||||
ENV PATH="/app/.venv/bin:$PATH"
|
||||
COPY --from=builder /app/.venv /app/.venv
|
||||
|
||||
# Default command. Can be overridden using docker run <image> <command>
|
||||
CMD ["entrypoint"]
|
||||
Reference in New Issue
Block a user