返回提交历史
Modified
docker/Dockerfile
+1
-1
Modified
docker/Dockerfile-slim
+38
-23
XFEstudio/gpt4free
perf(docker): optimize Dockerfile with multi-stage build and dependency layering
912887ab
代码差异
2 个文件
+39
-24
@@ -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
@@ -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"]