-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathDockerfile
52 lines (38 loc) · 1.21 KB
/
Dockerfile
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
FROM python:3.12-slim AS build
SHELL ["sh", "-exc"]
RUN apt-get update -qy && apt-get install -qyy \
-o APT::Install-Recommends=false \
-o APT::Install-Suggests=false \
curl \
build-essential \
libxml2-dev \
libxslt1-dev \
libz-dev \
ffmpeg \
git
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
ENV UV_LINK_MODE=copy \
UV_COMPILE_BYTECODE=1 \
UV_PYTHON_DOWNLOADS=never \
UV_PYTHON=python3.12 \
UV_PROJECT_ENVIRONMENT=/app
COPY pyproject.toml /_lock/
COPY uv.lock /_lock/
RUN --mount=type=cache,target=/root/.cache \
cd /_lock && \
uv sync --locked --no-dev --no-install-project
COPY . /code
RUN --mount=type=cache,target=/root/.cache \
uv pip install --python=$UV_PROJECT_ENVIRONMENT --no-deps /code
FROM build AS runtime
WORKDIR /code
RUN groupadd -r app && useradd -r -d /code -g app -N app
RUN apt-get update -qy && apt-get install -qyy \
-o APT::Install-Recommends=false \
-o APT::Install-Suggests=false \
dumb-init \
sqlite3
COPY --from=build --chown=app:app /code /code
ENTRYPOINT ["dumb-init", "--", "uv", "run"]
CMD ["python", "src/main.py"]
LABEL org.opencontainers.image.source="https://github.com/obviyus/SuperSeriousBot"