mirror of
https://github.com/xtekky/gpt4free.git
synced 2024-12-24 11:34:02 +03:00
68 lines
1.8 KiB
Plaintext
68 lines
1.8 KiB
Plaintext
FROM python:bookworm
|
|
|
|
ARG G4F_VERSION
|
|
ARG G4F_USER=g4f
|
|
ARG G4F_USER_ID=1000
|
|
ARG PYDANTIC_VERSION=1.8.1
|
|
|
|
ENV G4F_VERSION $G4F_VERSION
|
|
ENV G4F_USER $G4F_USER
|
|
ENV G4F_USER_ID $G4F_USER_ID
|
|
ENV G4F_DIR /app
|
|
|
|
RUN apt-get update && apt-get upgrade -y \
|
|
&& apt-get install -y git \
|
|
&& apt-get install --quiet --yes --no-install-recommends \
|
|
build-essential \
|
|
# Add user and user group
|
|
&& groupadd -g $G4F_USER_ID $G4F_USER \
|
|
&& useradd -rm -G sudo -u $G4F_USER_ID -g $G4F_USER_ID $G4F_USER \
|
|
&& mkdir -p /var/log/supervisor \
|
|
&& chown "${G4F_USER_ID}:${G4F_USER_ID}" /var/log/supervisor \
|
|
&& echo "${G4F_USER}:${G4F_USER}" | chpasswd
|
|
|
|
USER $G4F_USER_ID
|
|
WORKDIR $G4F_DIR
|
|
|
|
ENV HOME /home/$G4F_USER
|
|
ENV PATH "${HOME}/.local/bin:${HOME}/.cargo/bin:${PATH}"
|
|
|
|
# Create app dir and copy the project's requirements file into it
|
|
RUN mkdir -p $G4F_DIR
|
|
COPY requirements-slim.txt $G4F_DIR
|
|
|
|
# Install rust toolchain
|
|
RUN curl https://sh.rustup.rs -sSf | bash -s -- -y
|
|
|
|
# Upgrade pip for the latest features and install the project's Python dependencies.
|
|
RUN python -m pip install --upgrade pip \
|
|
&& pip install --no-cache-dir \
|
|
Cython==0.29.22 \
|
|
setuptools \
|
|
# Install PyDantic
|
|
&& pip install \
|
|
-vvv \
|
|
--no-cache-dir \
|
|
--no-binary pydantic \
|
|
--global-option=build_ext \
|
|
--global-option=-j8 \
|
|
pydantic==${PYDANTIC_VERSION} \
|
|
&& cat requirements.txt | xargs -n 1 pip install --no-cache-dir \
|
|
# Remove build packages
|
|
&& pip uninstall --yes \
|
|
Cython \
|
|
setuptools
|
|
|
|
USER root
|
|
|
|
# Clean up build deps
|
|
RUN rustup self uninstall -y \
|
|
&& apt-get purge --auto-remove --yes \
|
|
build-essential \
|
|
&& apt-get clean \
|
|
&& rm --recursive --force /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
USER $G4F_USER_ID
|
|
|
|
# Copy the entire package into the container.
|
|
ADD --chown=$G4F_USER:$G4F_USER g4f $G4F_DIR/g4f |