-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathDockerfile
More file actions
69 lines (55 loc) · 2.29 KB
/
Copy pathDockerfile
File metadata and controls
69 lines (55 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# syntax=docker/dockerfile:1.4
########################################
# Stage 0 — Build wheels using wheel-builder
########################################
FROM wheelbuilder AS wheels
WORKDIR /build
COPY ./subvortex/validator/challenger/requirements.txt ./requirements.txt
RUN pip wheel -r requirements.txt -w /wheels \
&& rm -rf ~/.cache/pip
########################################
# Stage 1 — Final runtime image
########################################
FROM python:3.11-slim
# ---------- Metadata & Labels ----------
ARG MAINTAINER="subvortex.bt@gmail.com"
ARG VERSION="0.0.0"
ARG ROLE_VERSION="0.0.0"
ARG COMPONENT_VERSION="0.0.0"
LABEL maintainer=$MAINTAINER
LABEL version=$VERSION
LABEL validator.version=$ROLE_VERSION
LABEL validator.challenger.version=$COMPONENT_VERSION
# ---------- Environment ----------
ENV PYTHONUNBUFFERED=1
ARG SUBVORTEX_OBSERVER_TYPE=file
ENV SV_OBSERVER_TYPE=${SUBVORTEX_OBSERVER_TYPE}
# ✅ Install required runtime libraries
RUN apt-get update && apt-get install -y \
libnfnetlink0 \
libnetfilter-queue1 \
iptables \
libcap2-bin \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# 🧱 Copy only built wheels from Stage 0
COPY --from=wheels /wheels /tmp/wheels
# ✅ Only copy wheels and install, discard after
COPY --from=wheels /wheels /tmp/wheels
COPY ./subvortex/validator/challenger/requirements.txt ./requirements.txt
RUN pip install --no-cache-dir --find-links=/tmp/wheels -r requirements.txt \
&& rm -rf /tmp/wheels ~/.cache/pip
# 📁 Copy source code
COPY ./pyproject-validator.toml ./pyproject.toml
COPY ./subvortex/pyproject.toml ./subvortex/pyproject.toml
COPY ./subvortex/core ./subvortex/core
COPY ./subvortex/validator/version.py ./subvortex/validator/version.py
COPY ./subvortex/validator/core ./subvortex/validator/core
COPY ./subvortex/validator/challenger/src ./subvortex/validator/challenger/src
COPY ./subvortex/validator/challenger/entrypoint.sh ./subvortex/validator/challenger/entrypoint.sh
COPY ./subvortex/validator/challenger/pyproject.toml ./subvortex/validator/challenger/pyproject.toml
# 🧩 Install project (editable)
RUN pip install "./subvortex/validator/challenger[observer-${SV_OBSERVER_TYPE}]" \
&& pip install -e . \
&& rm -rf ~/.cache/pip
ENTRYPOINT ["/bin/bash", "./subvortex/validator/challenger/entrypoint.sh"]