XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

perf(docker): optimize Dockerfile with multi-stage build and dependency layering

912887ab
Anand Mall <anand@example.com>
提交于

代码差异

2 个文件 +39 -24
Modified docker/Dockerfile +1 -1
@@ -45,7 +45,7 @@ WORKDIR $G4F_DIR
45 45 COPY requirements.txt $G4F_DIR
46 46
47 47 # Upgrade pip for the latest features and install the project's Python dependencies.
48 RUN pip install --break-system-packages -r requirements.txt
48 RUN pip install --no-cache-dir --break-system-packages -r requirements.txt
49 49
50 50 # Copy the entire package into the container.
51 51 ADD --chown=$SEL_UID:$SEL_GID g4f $G4F_DIR/g4f
Modified docker/Dockerfile-slim +38 -23
@@ -1,35 +1,50 @@
1 # Build stage
2 FROM python:slim-bookworm AS builder
3
4 WORKDIR /build
5
6 RUN apt-get update && apt-get install -y --no-install-recommends \
7 gcc \
8 python3-dev \
9 libffi-dev \
10 && rm -rf /var/lib/apt/lists/*
11
12 COPY requirements-slim.txt .
13 RUN pip install --no-cache-dir --prefix=/install -r requirements-slim.txt
14
15 # Final runtime stage
1 16 FROM python:slim-bookworm
2 17
3 18 ARG G4F_VERSION
4 ARG G4F_LIVE=true
5 19 ARG G4F_USER=g4f
6 20 ARG G4F_USER_ID=1000
7 21
8 ENV G4F_VERSION $G4F_VERSION
9 ENV G4F_LIVE $G4F_LIVE
10 ENV G4F_USER $G4F_USER
11 ENV G4F_USER_ID $G4F_USER_ID
12 ENV G4F_DIR /app
22 ENV G4F_VERSION=$G4F_VERSION \
23 G4F_USER=$G4F_USER \
24 G4F_USER_ID=$G4F_USER_ID \
25 G4F_DIR=/app \
26 PYTHONUNBUFFERED=1 \
27 PYTHONDONTWRITEBYTECODE=1
28
29 RUN apt-get update && apt-get install -y --no-install-recommends \
30 ffmpeg \
31 flac \
32 curl \
33 && groupadd -g $G4F_USER_ID $G4F_USER \
34 && useradd -rm -u $G4F_USER_ID -g $G4F_USER_ID $G4F_USER \
35 && apt-get clean \
36 && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
37
38 # Copy pre-compiled dependencies from builder stage
39 COPY --from=builder /install /usr/local
13 40
14 RUN apt-get update && apt-get upgrade -y \
15 && apt-get install -y git cron ffmpeg flac gcc \
16 # Add user and user group
17 && groupadd -g $G4F_USER_ID $G4F_USER \
18 && useradd -rm -G sudo -u $G4F_USER_ID -g $G4F_USER_ID $G4F_USER \
19 && echo "${G4F_USER}:${G4F_USER}" | chpasswd \
20 && apt-get clean \
21 && rm --recursive --force /var/lib/apt/lists/* /tmp/* /var/tmp/*
41 WORKDIR $G4F_DIR
22 42
23 RUN mkdir -p $G4F_DIR
24 RUN chown "${G4F_USER_ID}:${G4F_USER_ID}" $G4F_DIR
43 # Copy application source code
44 COPY --chown=$G4F_USER_ID:$G4F_USER_ID . $G4F_DIR
25 45
26 46 USER $G4F_USER_ID
27 WORKDIR $G4F_DIR
28
29 ENV HOME /home/$G4F_USER
30 ENV PATH "${HOME}/.local/bin:${PATH}"
31 47
32 RUN git clone https://github.com/xtekky/gpt4free.git $G4F_DIR \
33 && pip install --no-cache-dir -r requirements-slim.txt
48 EXPOSE 8080
34 49
35 CMD python -m etc.tool.update && docker/update.sh & docker/start.sh
50 CMD ["python", "-m", "g4f", "--port", "8080"]