From 036d41b9f469e2ee5a111f4c77370d508e0c1df6 Mon Sep 17 00:00:00 2001 From: hlohaus <983577+hlohaus@users.noreply.github.com> Date: Sat, 25 Jan 2025 09:10:18 +0100 Subject: Update base image of main docker image --- README.md | 22 +++++++++++---------- docker-compose-slim.yml | 19 ++++-------------- docker-compose.yml | 1 - docker/Dockerfile | 48 +++++++--------------------------------------- docker/supervisor-api.conf | 2 +- docker/supervisor-gui.conf | 12 ------------ g4f/version.py | 2 +- 7 files changed, 25 insertions(+), 81 deletions(-) delete mode 100755 docker/supervisor-gui.conf diff --git a/README.md b/README.md index 70889214..debd5940 100644 --- a/README.md +++ b/README.md @@ -99,22 +99,24 @@ Is your site on this repository and you want to take it down? Send an email to t ### 🐳 Using Docker 1. **Install Docker:** [Download and install Docker](https://docs.docker.com/get-docker/). 2. **Set Up Directories:** Before running the container, make sure the necessary data directories exist or can be created. For example, you can create and set ownership on these directories by running: - ```bash +```bash mkdir -p ${PWD}/har_and_cookies ${PWD}/generated_images - chown -R 1000:1000 ${PWD}/har_and_cookies ${PWD}/generated_images - ``` + sudo chown -R 1200:1201 ${PWD}/har_and_cookies ${PWD}/generated_images +``` 3. **Run the Docker Container:** Use the following commands to pull the latest image and start the container: - ```bash +```bash docker pull hlohaus789/g4f - docker run -p 8080:8080 -p 1337:1337 -p 7900:7900 \ + docker run -p 8080:8080 -p 7900:7900 \ --shm-size="2g" \ -v ${PWD}/har_and_cookies:/app/har_and_cookies \ -v ${PWD}/generated_images:/app/generated_images \ hlohaus789/g4f:latest - ``` +``` -4. **Running the Slim Docker Image:** Use the following command to run the Slim Docker image. This command also updates the `g4f` package at startup and installs any additional dependencies: - ```bash +4. **Running the Slim Docker Image:** And use the following commands to run the Slim Docker image. This command also updates the `g4f` package at startup and installs any additional dependencies: +```bash + mkdir -p ${PWD}/har_and_cookies ${PWD}/generated_images + chown -R 1000:1000 ${PWD}/har_and_cookies ${PWD}/generated_images docker run \ -p 1337:1337 \ -v ${PWD}/har_and_cookies:/app/har_and_cookies \ @@ -126,8 +128,8 @@ Is your site on this repository and you want to take it down? Send an email to t ``` 5. **Access the Client Interface:** - - **To use the included client, navigate to:** [http://localhost:8080/chat/](http://localhost:8080/chat/) or [http://localhost:1337/chat/](http://localhost:1337/chat/) - - **Or set the API base for your client to:** [http://localhost:1337/v1](http://localhost:1337/v1) + - **To use the included client, navigate to:** [http://localhost:8080/chat/](http://localhost:8080/chat/) + - **Or set the API base for your client to:** [http://localhost:8080/v1](http://localhost:8080/v1) 6. **(Optional) Provider Login:** If required, you can access the container's desktop here: http://localhost:7900/?autoconnect=1&resize=scale&password=secret for provider login purposes. diff --git a/docker-compose-slim.yml b/docker-compose-slim.yml index f56948de..7a02810f 100644 --- a/docker-compose-slim.yml +++ b/docker-compose-slim.yml @@ -1,25 +1,14 @@ version: '3' services: - g4f-gui: - container_name: g4f-gui + g4f-slim: + container_name: g4f-slim image: hlohaus789/g4f:latest-slim build: context: . dockerfile: docker/Dockerfile-slim - command: python -m g4f.cli gui -debug + command: python -m g4f --debug --port 8080 volumes: - .:/app ports: - - '8080:8080' - g4f-api: - container_name: g4f-api - image: hlohaus789/g4f:latest-slim - build: - context: . - dockerfile: docker/Dockerfile-slim - command: python -m g4f.cli api - volumes: - - .:/app - ports: - - '1337:1337' \ No newline at end of file + - '8080:8080' \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 3f8bc4ea..1984bc0b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,7 +11,6 @@ services: - .:/app ports: - '8080:8080' - - '1337:1337' - '7900:7900' environment: - OLLAMA_HOST=host.docker.internal diff --git a/docker/Dockerfile b/docker/Dockerfile index c73418f9..cafea013 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,26 +1,11 @@ -FROM seleniarm/node-chromium +FROM selenium/node-chrome ARG G4F_VERSION -ARG G4F_USER=g4f -ARG G4F_USER_ID=1000 -ARG G4F_NO_GUI -ARG G4F_PASS=secret - ENV G4F_VERSION $G4F_VERSION -ENV G4F_USER $G4F_USER -ENV G4F_USER_ID $G4F_USER_ID -ENV G4F_NO_GUI $G4F_NO_GUI ENV SE_SCREEN_WIDTH 1850 -ENV PYTHONUNBUFFERED 1 ENV G4F_DIR /app -ENV G4F_LOGIN_URL http://localhost:7900/?autoconnect=1&resize=scale&password=$G4F_PASS -ENV HOME /home/$G4F_USER -ENV PATH $PATH:$HOME/.local/bin -ENV SE_DOWNLOAD_DIR $HOME/Downloads -ENV SEL_USER $G4F_USER -ENV SEL_UID $G4F_USER_ID -ENV SEL_GID $G4F_USER_ID +ENV G4F_LOGIN_URL http://localhost:7900/?autoconnect=1&resize=scale&password=secret USER root @@ -43,30 +28,15 @@ 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 -RUN if [ "$G4F_NO_GUI" ] ; then \ - rm /etc/supervisor/conf.d/gui.conf \ - ; fi # Change background image COPY docker/background.png /usr/share/images/fluxbox/ubuntu-light.png # Add user, fix permissions -RUN groupadd -g $G4F_USER_ID $G4F_USER \ - && useradd -rm -G sudo -u $G4F_USER_ID -g $G4F_USER_ID $G4F_USER \ - && echo "${G4F_USER}:${G4F_PASS}" | chpasswd \ - && mkdir "${SE_DOWNLOAD_DIR}" \ - && chown "${G4F_USER_ID}:${G4F_USER_ID}" $SE_DOWNLOAD_DIR /var/run/supervisor /var/log/supervisor \ - && chown "${G4F_USER_ID}:${G4F_USER_ID}" -R /opt/bin/ /usr/bin/chromedriver /opt/selenium/ +RUN chown "${SEL_UID}:${SEL_GID}" $HOME/.local # Switch user -USER $G4F_USER_ID - -# Set VNC password -RUN mkdir -p ${HOME}/.vnc \ - && x11vnc -storepasswd ${G4F_PASS} ${HOME}/.vnc/passwd +USER $SEL_UID # Set the working directory in the container. WORKDIR $G4F_DIR @@ -76,14 +46,10 @@ COPY requirements.txt $G4F_DIR # Upgrade pip for the latest features and install the project's Python dependencies. RUN pip install --break-system-packages --upgrade pip \ - && pip install --break-system-packages -r requirements.txt \ - && pip install --break-system-packages \ - undetected-chromedriver selenium-wire \ - && pip uninstall -y --break-system-packages \ - pywebview + && pip install --break-system-packages -r requirements.txt # Copy the entire package into the container. -ADD --chown=$G4F_USER:$G4F_USER g4f $G4F_DIR/g4f +ADD --chown=$SEL_UID:$SEL_GID g4f $G4F_DIR/g4f # Expose ports -EXPOSE 8080 1337 7900 +EXPOSE 8080 7900 diff --git a/docker/supervisor-api.conf b/docker/supervisor-api.conf index 74572634..6679bcbc 100755 --- a/docker/supervisor-api.conf +++ b/docker/supervisor-api.conf @@ -1,6 +1,6 @@ [program:g4f-api] priority=15 -command=python -m g4f.cli api +command=python -m g4f --port 8080 --debug directory=/app stopasgroup=true autostart=true diff --git a/docker/supervisor-gui.conf b/docker/supervisor-gui.conf deleted file mode 100755 index 0c77ffc5..00000000 --- a/docker/supervisor-gui.conf +++ /dev/null @@ -1,12 +0,0 @@ -[program:g4f-gui] -priority=15 -command=python -m g4f.cli gui -debug -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/g4f/version.py b/g4f/version.py index 3cde30c7..2d23cb48 100644 --- a/g4f/version.py +++ b/g4f/version.py @@ -86,7 +86,7 @@ class VersionUtils: except CalledProcessError: pass - raise VersionNotFoundError("Version not found") + return None @property def latest_version(self) -> str: -- cgit v1.2.3