-
Notifications
You must be signed in to change notification settings - Fork 402
Expand file tree
/
Copy pathDockerfile
More file actions
49 lines (43 loc) · 1.7 KB
/
Copy pathDockerfile
File metadata and controls
49 lines (43 loc) · 1.7 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
# ------------------------------------------------------------------------
# Trackers — optimize sandbox image
# Used by /optimize run --docker to run metric/guard in an isolated
# container with a read-only project mount.
#
# Build (run from project root):
# docker build -f autotune/Dockerfile -t trackers-optimize:latest .
#
# Runtime mounts (added automatically by the campaign framework):
# -v $(pwd):/workspace:ro project source (read-only)
# -v $(pwd)/.experiments:/workspace/.experiments:rw
# -v $HOME/.cache/trackers:/root/.cache/trackers:ro MOT17 data
# --tmpfs /tmp:rw,size=256m
# -w /workspace
# ------------------------------------------------------------------------
FROM ghcr.io/astral-sh/uv:python3.10-bookworm-slim
# System libraries required by opencv-python
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1 \
libglib2.0-0 \
libsm6 \
libxrender1 \
libxext6 \
git \
cmake \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# Copy the full project so uv can resolve and lock all dependencies.
# The venv is installed at /opt/venv (not /workspace) so that the
# runtime read-only project mount does not shadow the Linux venv.
COPY . /build/
WORKDIR /build
ENV UV_PROJECT_ENVIRONMENT=/opt/venv
RUN uv sync --group optimize
# At runtime the live project source is mounted at /workspace.
# UV_PROJECT_ENVIRONMENT points uv to the pre-built Linux venv so
# `uv run python` uses it without re-syncing.
# UV_NO_SYNC=1 prevents uv from attempting to re-sync on every run.
ENV PATH="/opt/venv/bin:$PATH"
ENV PYTHONPATH="/workspace"
ENV UV_PROJECT_ENVIRONMENT=/opt/venv
ENV UV_NO_SYNC=1
WORKDIR /workspace