From ea1448001df9c66f05a52618eb3e40a88df5efe8 Mon Sep 17 00:00:00 2001 From: Heiner Lohaus Date: Sun, 17 Nov 2024 11:06:37 +0100 Subject: Add nodriver to Gemini provider, Add slim docker image with google-chrome usage, Add the new docker images to publish worklow, Update requirements.txt and pip requirements --- docker/Dockerfile | 1 + docker/Dockerfile-slim | 68 ++++++++++++++++++++++++++++++++++++++++++++++ docker/supervisor-api.conf | 12 ++++++++ docker/supervisor-gui.conf | 2 +- docker/supervisor.conf | 15 +--------- 5 files changed, 83 insertions(+), 15 deletions(-) create mode 100644 docker/Dockerfile-slim create mode 100755 docker/supervisor-api.conf (limited to 'docker') diff --git a/docker/Dockerfile b/docker/Dockerfile index eb03390c..625312e2 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -40,6 +40,7 @@ RUN apt-get -qqy update \ # Update entrypoint COPY docker/supervisor.conf /etc/supervisor/conf.d/selenium.conf +COPY docker/supervisor-api.conf /etc/supervisor/conf.d/api.conf COPY docker/supervisor-gui.conf /etc/supervisor/conf.d/gui.conf # If no gui diff --git a/docker/Dockerfile-slim b/docker/Dockerfile-slim new file mode 100644 index 00000000..6c0afc64 --- /dev/null +++ b/docker/Dockerfile-slim @@ -0,0 +1,68 @@ +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} \ + && pip install --no-cache-dir -r requirements-slim.txt \ + # 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 \ No newline at end of file diff --git a/docker/supervisor-api.conf b/docker/supervisor-api.conf new file mode 100755 index 00000000..74572634 --- /dev/null +++ b/docker/supervisor-api.conf @@ -0,0 +1,12 @@ +[program:g4f-api] +priority=15 +command=python -m g4f.cli api +directory=/app +stopasgroup=true +autostart=true +autorestart=true + +;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs" +redirect_stderr=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 \ No newline at end of file diff --git a/docker/supervisor-gui.conf b/docker/supervisor-gui.conf index 44273c67..0c77ffc5 100755 --- a/docker/supervisor-gui.conf +++ b/docker/supervisor-gui.conf @@ -1,6 +1,6 @@ [program:g4f-gui] priority=15 -command=python -m g4f.cli gui +command=python -m g4f.cli gui -debug directory=/app stopasgroup=true autostart=true diff --git a/docker/supervisor.conf b/docker/supervisor.conf index f0f01fd1..7fd4331a 100755 --- a/docker/supervisor.conf +++ b/docker/supervisor.conf @@ -47,17 +47,4 @@ stderr_logfile_maxbytes=50MB stdout_logfile_backups=5 stderr_logfile_backups=5 stdout_capture_maxbytes=50MB -stderr_capture_maxbytes=50MB - -[program:g4f-api] -priority=15 -command=python -m g4f.cli api -directory=/app -stopasgroup=true -autostart=true -autorestart=true - -;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs" -redirect_stderr=true -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 \ No newline at end of file +stderr_capture_maxbytes=50MB \ No newline at end of file -- cgit v1.2.3