-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
97 lines (67 loc) · 2.43 KB
/
Dockerfile
File metadata and controls
97 lines (67 loc) · 2.43 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# Base stage
FROM python:3.14-slim AS base
ENV POETRY_NO_INTERACTION=1 \
POETRY_VIRTUALENVS_IN_PROJECT=1 \
POETRY_VIRTUALENVS_CREATE=1 \
POETRY_CACHE_DIR=/tmp/poetry_cache
RUN pip install poetry
WORKDIR /app
COPY pyproject.toml poetry.lock ./
# Production builder
FROM base AS prod-builder
RUN poetry install --only=main --no-root && \
rm -rf $POETRY_CACHE_DIR
# Development builder
FROM base AS dev-builder
RUN poetry install --no-root && \
rm -rf $POETRY_CACHE_DIR
# Production runtime
FROM python:3.14-slim AS production
ARG USER_UID=1000
ARG VERSION=1.0.0
ENV VIRTUAL_ENV=/app/.venv
ENV PATH="/app/.venv/bin:$PATH"
ENV PYTHONPATH=/app
LABEL author="SOAT Team"
LABEL version=${VERSION}
LABEL description="Video2Frame - Video Processor"
RUN apt-get update && apt-get install -y --no-install-recommends \
libxcb1 \
libgl1 \
libglib2.0-0 \
&& rm -rf /var/lib/apt/lists/*
RUN useradd -m -d /app -u ${USER_UID} -s /bin/bash soat
WORKDIR /app
COPY --from=prod-builder ${VIRTUAL_ENV} ${VIRTUAL_ENV}
USER soat
COPY --chown=${USER_UID}:${USER_UID} ./docker-entrypoint ./docker-entrypoint
COPY --chown=${USER_UID}:${USER_UID} ./video_processor ./video_processor
COPY --chown=${USER_UID}:${USER_UID} ./logging.ini ./logging.ini
ENTRYPOINT ["sh", "/app/docker-entrypoint/start_video_uploaded_listener.sh"]
# Development/Test runtime
FROM python:3.14-slim AS development
ARG USER_UID=1000
ARG VERSION=1.0.0-dev
ENV VIRTUAL_ENV=/app/.venv
ENV PATH="/app/.venv/bin:$PATH"
ENV PYTHONPATH=/app
LABEL author="SOAT Team"
LABEL version=${VERSION}
LABEL description="Video2Frame - Video Processor - Development"
RUN apt-get update && apt-get install -y --no-install-recommends \
libxcb1 \
libgl1 \
libglib2.0-0 \
&& rm -rf /var/lib/apt/lists/*
RUN useradd -m -d /app -u ${USER_UID} -s /bin/bash soat
WORKDIR /app
COPY --from=dev-builder ${VIRTUAL_ENV} ${VIRTUAL_ENV}
USER soat
COPY --chown=${USER_UID}:${USER_UID} ./docker-entrypoint ./docker-entrypoint
COPY --chown=${USER_UID}:${USER_UID} ./video_processor ./video_processor
COPY --chown=${USER_UID}:${USER_UID} ./tests ./tests
COPY --chown=${USER_UID}:${USER_UID} ./logging.ini ./logging.ini
COPY --chown=${USER_UID}:${USER_UID} ./pytest.ini ./pytest.ini
COPY --chown=${USER_UID}:${USER_UID} ./pyproject.toml ./pyproject.toml
COPY --chown=${USER_UID}:${USER_UID} ./.coveragerc ./.coveragerc
ENTRYPOINT ["sh", "/app/docker-entrypoint/start_video_uploaded_listener.sh"]