Change default port for gui

Change default host for api
Disable gui in build
Add custom docker user
This commit is contained in:
Heiner Lohaus 2023-12-11 02:50:33 +01:00
parent d743ee0c26
commit b2d02ed624
7 changed files with 48 additions and 27 deletions

View File

@ -10,6 +10,6 @@ services:
volumes:
- .:/app
ports:
- '8080:80'
- '8080:8080'
- '1337:1337'
- '7900:7900'

View File

@ -1,13 +1,27 @@
FROM selenium/node-chrome
ENV SE_SCREEN_WIDTH 1850
ENV G4F_LOGIN_URL http://localhost:7900/?autoconnect=1&resize=scale&password=secret
ENV PYTHONUNBUFFERED 1
ENV G4F_DIR /app
ENV G4F_LOGIN_URL http://localhost:7900/?autoconnect=1&resize=scale&password=secret
ARG G4F_VERSION
ENV G4F_VERSION ${G4F_VERSION}
ARG G4F_USER
ENV G4F_USER ${G4F_USER:-g4f}
ARG G4F_USER_ID
ENV G4F_USER_ID ${G4F_USER_ID:-1000}
ARG G4F_NO_GUI
ENV G4F_NO_GUI ${G4F_NO_GUI}
ENV HOME /home/$G4F_USER
USER root
# If docker compose, install git
RUN if [ "$G4F_VERSION" = "" ] ; then \
apt-get -qqy update && \
apt-get -qqy install git \
; fi
# Python packages
RUN apt-get -qqy update \
&& apt-get -qqy install \
@ -22,24 +36,32 @@ RUN rm -rf /var/lib/apt/lists/* /var/cache/apt/* \
# Update entrypoint
COPY docker/supervisor.conf /etc/supervisor/conf.d/selenium.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
# Switch user
USER 1200
RUN groupadd -g $G4F_USER_ID $G4F_USER
RUN useradd -rm -G sudo -u $G4F_USER_ID -g $G4F_USER_ID $G4F_USER
USER $G4F_USER_ID
# Set the working directory in the container.
WORKDIR /app
WORKDIR $G4F_DIR
# Copy the project's requirements file into the container.
COPY requirements.txt /app/
COPY requirements.txt $G4F_DIR
# Upgrade pip for the latest features and install the project's Python dependencies.
RUN pip install --upgrade pip && pip install -r requirements.txt
# Copy the entire package into the container.
COPY g4f /app/g4f
ADD --chown=$G4F_USER g4f $G4F_DIR/
# Expose ports
EXPOSE 80 1337
EXPOSE 8080 1337

12
docker/supervisor-gui.conf Executable file
View File

@ -0,0 +1,12 @@
[program:g4f-gui]
priority=15
command=python -m g4f.cli gui
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

View File

@ -57,19 +57,6 @@ 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
[program:g4f-gui]
priority=15
command=python -m g4f.cli gui
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

View File

@ -15,7 +15,7 @@ def main():
parser = argparse.ArgumentParser(description="Run gpt4free")
subparsers = parser.add_subparsers(dest="mode", help="Mode to run the g4f in.")
api_parser=subparsers.add_parser("api")
api_parser.add_argument("--bind", default="127.0.0.1:1337", help="The bind string.")
api_parser.add_argument("--bind", default="0.0.0.0:1337", help="The bind string.")
api_parser.add_argument("--debug", type=bool, default=False, help="Enable verbose logging")
api_parser.add_argument("--ignored-providers", nargs="+", choices=[provider.name for provider in IgnoredProviders],
default=[], help="List of providers to ignore when processing request.")

View File

@ -1,6 +1,6 @@
from os import environ
from requests import get
from importlib.metadata import version, PackageNotFoundError
from importlib.metadata import version as get_package_version, PackageNotFoundError
from subprocess import check_output, CalledProcessError, PIPE
from .errors import VersionNotFoundError
@ -10,7 +10,7 @@ version_check = True
def get_version() -> str:
# Read from package manager
try:
return version("g4f")
return get_package_version("g4f")
except PackageNotFoundError:
pass
# Read from docker environment
@ -33,7 +33,7 @@ def check_pypi_version() -> None:
try:
version = get_version()
latest_version = get_lastet_version()
if version != latest_version:
print(f'New pypi version: {latest_version} (current: {version}) | pip install -U g4f')
except Exception as e:
print(f'Failed to check g4f pypi version: {e}')
if version != latest_version:
print(f'New pypi version: {latest_version} (current: {version}) | pip install -U g4f')
print(f'Failed to check g4f pypi version: {e}')

View File

@ -6,7 +6,7 @@ from g4f.gui import run_gui
def gui_parser():
parser = ArgumentParser(description="Run the GUI")
parser.add_argument("-host", type=str, default="0.0.0.0", help="hostname")
parser.add_argument("-port", type=int, default=80, help="port")
parser.add_argument("-port", type=int, default=8080, help="port")
parser.add_argument("-debug", action="store_true", help="debug mode")
return parser