FROM python:3.11-alpine ARG LOGGING_CONFIG_SRC="./transip_client/logging/default.yml" ARG LOGGING_CONFIG_DST="./transip_client/logging/config.yml" ARG UV_ARGS="" COPY --from=ghcr.io/astral-sh/uv:python3.11-alpine \ /usr/local/bin/uv \ /usr/local/bin/uvx \ /bin/ # provides the dig package for the DNSAdapter RUN apk add --no-cache bind-tools # copy from the cache instead of linking since mounted volumes are used ENV UV_LINK_MODE=copy ENV UV_CACHE_DIR=/app/.cache/uv ENV PATH="/app/.venv/bin:$PATH" ENV LOGGING_CONFIG=$LOGGING_CONFIG_DST RUN adduser -DHu 1000 transip_client USER transip_client WORKDIR /app RUN mkdir --parents /app/.cache/uv # only install dependencies RUN --mount=type=cache,uid=1000,target=/app/.cache/uv \ --mount=type=bind,source=uv.lock,target=/app/uv.lock \ --mount=type=bind,source=pyproject.toml,target=/app/pyproject.toml \ uv sync --frozen --no-dev --no-install-project COPY pyproject.toml uv.lock /app COPY transip_client /app/transip_client COPY $LOGGING_CONFIG_SRC $LOGGING_CONFIG_DST # install dependencies + project RUN --mount=type=cache,uid=1000,target=/app/.cache/uv \ uv sync --frozen --no-dev $UV_ARGS ENTRYPOINT ["/bin/uv", "run", "--no-sync", "--", "transip-update"]