-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathDockerfile.dev
More file actions
74 lines (59 loc) · 1.9 KB
/
Dockerfile.dev
File metadata and controls
74 lines (59 loc) · 1.9 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
70
71
72
73
74
# --- UI Builder Stage ---
FROM node:20-slim AS ui-builder
WORKDIR /app/web-editor
COPY web-editor/package.json web-editor/package-lock.json ./
RUN npm ci
COPY web-editor/ .
RUN npm run build
# Development Dockerfile for hot reload and debugging
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS development
ARG APP_USER=appuser
ARG APP_GROUP=appgrp
ARG UID=1000
ARG GID=1000
# Install development dependencies
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
curl \
git \
htop \
pkg-config \
vim \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Create non-root user and group
RUN (getent group "${GID}" || groupadd -g "${GID}" "${APP_GROUP}") \
&& useradd -u "${UID}" -g "${GID}" -s /bin/sh -m "${APP_USER}"
# Set working directory
WORKDIR /app
# Configure UV for development
ENV UV_COMPILE_BYTECODE=0
ENV UV_LINK_MODE=copy
ENV PYTHONUNBUFFERED=1
ENV PYTHONPATH=/app/src
ENV WEB_EDITOR_PATH=/app/web-editor
ENV SCENARIOS_PATH=/app/scenarios
ENV DOCS_PATH=/app/docs
# Copy dependency files
COPY --chown=${UID}:${GID} LICENSE README.md pyproject.toml uv.lock ./
COPY --chown=${UID}:${GID} docs ./docs
# Install all dependencies including dev dependencies
RUN --mount=type=cache,target=/home/${APP_USER}/.cache/uv,uid=${UID},gid=${GID} \
uv sync --frozen \
&& chown -R ${UID}:${GID} .venv
# Copy source code
COPY --chown=${UID}:${GID} . .
# Copy UI artifacts from ui-builder stage
COPY --chown=${UID}:${GID} --from=ui-builder /app/web-editor/dist /app/web-editor/dist
# Create directories
RUN mkdir -p /app/reports /app/config \
&& chown -R ${UID}:${GID} /app/reports /app/config
# Expose the server port
EXPOSE 8989
# Switch to non-root user
USER ${UID}:${GID}
# Set executable path
ENV PATH="/app/.venv/bin:$PATH"
# Default command for development
CMD ["openutm-verify", "--config", "config/default.yaml"]