File size: 1,478 Bytes
5d39c7c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
FROM ghcr.io/astral-sh/uv:bookworm-slim

WORKDIR /app
VOLUME /data

ENV UV_COMPILE_BYTECODE=1
ENV UV_LINK_MODE=copy
RUN uv python install 3.12

RUN --mount=type=cache,target=/root/.cache/uv \
    --mount=type=bind,source=uv.lock,target=uv.lock \
    --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
    uv sync --locked --no-install-project --no-dev

RUN apt update && \
    apt install --no-install-recommends -y \
    libgl1 \
    libegl1 \
    libglx-mesa0  \
    fontconfig \
    gettext \
    ca-certificates \
    fonts-noto-color-emoji && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
    apt-get clean all

ENV LOAD_BUILTIN_MEMES=true \
    MEME_DIRS="[\"/data/memes\"]" \
    MEME_DISABLED_LIST="[]" \
    GIF_MAX_SIZE=10.0 \
    GIF_MAX_FRAMES=100 \
    LOG_LEVEL="INFO" \
    HOST="0.0.0.0" \
    PORT="2233"

ENV PATH="/app/.venv/bin:$PATH"

COPY ./meme_generator /app/meme_generator
COPY ./resources/fonts/* /usr/share/fonts/meme/
COPY ./pyproject.toml /app/pyproject.toml
COPY ./README.md /app/README.md
COPY ./docker/start.sh /app/start.sh
COPY ./docker/config.toml.template /app/config.toml.template
COPY ./uv.lock /app/uv.lock

RUN fc-cache -fv && \
    rm -f /usr/share/fontconfig/conf.avail/05-reset-dirs-sample.conf && \
    mkdir -p ~/.config/meme_generator && \
    chmod +x /app/start.sh

RUN --mount=type=cache,target=/root/.cache/uv \
    uv sync --locked --no-dev

#  测试运行
RUN uv run meme

CMD ["sh", "/app/start.sh"]