34 lines
1.1 KiB
Docker
34 lines
1.1 KiB
Docker
FROM python:3.12-slim
|
|
|
|
ARG SOURCE_COMMIT
|
|
ARG SOURCE_VERSION
|
|
LABEL org.opencontainers.image.source="https://github.com/fourblocks2020/trex-core" \
|
|
org.opencontainers.image.revision="${SOURCE_COMMIT}" \
|
|
org.opencontainers.image.version="${SOURCE_VERSION}" \
|
|
org.opencontainers.image.title="trex-core"
|
|
|
|
WORKDIR /opt/trex-core
|
|
|
|
RUN test "${#SOURCE_COMMIT}" -eq 40 \
|
|
&& case "${SOURCE_COMMIT}" in \
|
|
*[!0-9a-f]*) false ;; \
|
|
*) true ;; \
|
|
esac \
|
|
|| { echo "SOURCE_COMMIT must be a 40-character lowercase commit" >&2; exit 1; }
|
|
|
|
COPY pyproject.toml uv.lock ./
|
|
COPY trex_core/ ./trex_core/
|
|
|
|
RUN test "$(python -c 'import pathlib,tomllib; print(tomllib.loads(pathlib.Path("pyproject.toml").read_text())["project"]["version"])')" = "${SOURCE_VERSION}" \
|
|
|| { echo "SOURCE_VERSION must match pyproject.toml" >&2; exit 1; }
|
|
|
|
RUN python -m pip install --no-cache-dir "uv==0.11.14" \
|
|
&& uv sync --locked --no-dev --no-editable \
|
|
&& useradd --create-home --uid 10001 trex
|
|
|
|
ENV PATH="/opt/trex-core/.venv/bin:${PATH}"
|
|
|
|
USER 10001:10001
|
|
|
|
ENTRYPOINT ["trex-core-daemon"]
|