File size: 1,406 Bytes
5ab5ef6
b9a47ba
 
 
70ec7be
3c81ecb
b9c3748
b9a47ba
cbaf8dc
 
 
 
 
b9a47ba
0fbc508
 
c67d34c
 
 
b9a47ba
c67d34c
b9a47ba
5ab5ef6
c67d34c
 
5ec2f03
 
 
c67d34c
3e60f77
5ab5ef6
 
 
0a6b9e5
5ab5ef6
cbaf8dc
7a13ee8
cbaf8dc
0a6b9e5
cbaf8dc
5ab5ef6
 
 
fb29175
7c67037
 
5bd1a50
 
0a6b9e5
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
FROM ghcr.io/astral-sh/uv:debian-slim AS builder

# Enable bytecode compilation, Copy from the cache instead of linking since it's a mounted volume
ENV UV_COMPILE_BYTECODE=1 \
    UV_LINK_MODE=copy \
    UV_CACHE_DIR=/root/.cache/uv \
    UV_PYTHON_PREFERENCE=only-managed 

# # skipcq: DOK-DL3008
# RUN apt-get update && \
#     apt-get install -qq -y --no-install-recommends espeak-ng && \
#     apt-get clean && \
#     rm -rf /var/lib/apt/lists/*

WORKDIR /app

RUN --mount=type=cache,target=${UV_CACHE_DIR} \
    --mount=type=bind,source=uv.lock,target=uv.lock \
    --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
    --mount=type=bind,source=.python-version,target=.python-version \
    uv sync --frozen --no-install-project --no-dev

COPY . /app

RUN --mount=type=cache,target=${UV_CACHE_DIR} \
    --mount=type=bind,source=uv.lock,target=uv.lock \
    --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
    --mount=type=bind,source=.python-version,target=.python-version \
    uv sync --frozen --no-dev

FROM debian:bookworm-slim AS production

RUN groupadd vocalizr && \
    useradd --gid vocalizr --shell /bin/bash --create-home vocalizr

WORKDIR /app

COPY --from=builder --chown=vocalizr:vocalizr /app /app

ENV PATH="/app/.venv/Scripts:$PATH" \
    GRADIO_SERVER_PORT=8080

USER vocalizr

EXPOSE ${GRADIO_SERVER_PORT}

ENTRYPOINT [  ]

CMD ["python", "vocalizr"]