Improve docker image

This commit is contained in:
Heiner Lohaus 2023-12-06 11:54:50 +01:00
parent 3576dee75a
commit c667f1cec5
7 changed files with 86 additions and 23 deletions

View File

@ -2,13 +2,11 @@ version: '3'
services: services:
gpt4free: gpt4free:
image: gpt4free:latest image: ghcr.io/xtekky/gpt4free:latest
shm_size: 2gb shm_size: 2gb
build: build:
context: . context: .
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
cache_from:
- gpt4free:latest
volumes: volumes:
- .:/app - .:/app
ports: ports:

View File

@ -2,6 +2,7 @@ FROM selenium/node-chrome
ENV SE_SCREEN_WIDTH 1920 ENV SE_SCREEN_WIDTH 1920
ENV G4F_LOGIN_URL http://localhost:7900/?autoconnect=1&resize=scale&password=secret ENV G4F_LOGIN_URL http://localhost:7900/?autoconnect=1&resize=scale&password=secret
ENV PYTHONUNBUFFERED 1
USER root USER root
@ -18,7 +19,7 @@ RUN rm -rf /var/lib/apt/lists/* /var/cache/apt/* \
&& apt-get -qyy clean && apt-get -qyy clean
# Update entrypoint # Update entrypoint
COPY docker/start-selenium-node.sh /opt/bin/ COPY docker/supervisor.conf /etc/supervisor/conf.d/selenium.conf
# Change background image # Change background image
COPY g4f.png /usr/share/images/fluxbox/ubuntu-light.png COPY g4f.png /usr/share/images/fluxbox/ubuntu-light.png

View File

@ -1,17 +0,0 @@
#!/bin/bash
# Start the pulseaudio server
pulseaudio -D --exit-idle-time=-1
# Load the virtual sink and set it as default
pacmd load-module module-virtual-sink sink_name=v1
pacmd set-default-sink v1
# Set the monitor of v1 sink to be the default source
pacmd set-default-source v1.monitor
rm -f /tmp/.X*lock
# Start app servers
python -m g4f.cli api &
python -m g4f.cli gui

76
docker/supervisor.conf Executable file
View File

@ -0,0 +1,76 @@
[program:xvfb]
priority=0
command=/opt/bin/start-xvfb.sh
autostart=true
autorestart=true
;Logs
redirect_stderr=false
stdout_logfile=/var/log/supervisor/xvfb-stdout.log
stderr_logfile=/var/log/supervisor/xvfb-stderr.log
stdout_logfile_maxbytes=50MB
stderr_logfile_maxbytes=50MB
stdout_logfile_backups=5
stderr_logfile_backups=5
stdout_capture_maxbytes=50MB
stderr_capture_maxbytes=50MB
[program:vnc]
priority=5
command=/opt/bin/start-vnc.sh
autostart=true
autorestart=true
;Logs
redirect_stderr=false
stdout_logfile=/var/log/supervisor/vnc-stdout.log
stderr_logfile=/var/log/supervisor/vnc-stderr.log
stdout_logfile_maxbytes=50MB
stderr_logfile_maxbytes=50MB
stdout_logfile_backups=5
stderr_logfile_backups=5
stdout_capture_maxbytes=50MB
stderr_capture_maxbytes=50MB
[program:novnc]
priority=10
command=/opt/bin/start-novnc.sh
autostart=true
autorestart=true
;Logs
redirect_stderr=false
stdout_logfile=/var/log/supervisor/novnc-stdout.log
stderr_logfile=/var/log/supervisor/novnc-stderr.log
stdout_logfile_maxbytes=50MB
stderr_logfile_maxbytes=50MB
stdout_logfile_backups=5
stderr_logfile_backups=5
stdout_capture_maxbytes=50MB
stderr_capture_maxbytes=50MB
[program:g4f-cli]
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
[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

@ -601,7 +601,7 @@ observer.observe(message_input, { attributes: true });
let auto = document.createElement('option'); let auto = document.createElement('option');
auto.value = ''; auto.value = '';
auto.text = 'Default Model'; auto.text = 'Model: Default';
select.appendChild(auto); select.appendChild(auto);
for (model of models) { for (model of models) {

View File

@ -41,7 +41,10 @@ class Backend_Api:
return g4f._all_models return g4f._all_models
def providers(self): def providers(self):
return [provider.__name__ for provider in g4f.Provider.__providers__ if provider.working] return [
provider.__name__ for provider in g4f.Provider.__providers__
if provider.working and provider is not g4f.Provider.RetryProvider
]
def _gen_title(self): def _gen_title(self):
return { return {

View File

@ -275,6 +275,8 @@ class ModelUtils:
'gpt-3.5-turbo-16k' : gpt_35_turbo_16k, 'gpt-3.5-turbo-16k' : gpt_35_turbo_16k,
'gpt-3.5-turbo-16k-0613' : gpt_35_turbo_16k_0613, 'gpt-3.5-turbo-16k-0613' : gpt_35_turbo_16k_0613,
'gpt-3.5-long': gpt_35_long,
# gpt-4 # gpt-4
'gpt-4' : gpt_4, 'gpt-4' : gpt_4,
'gpt-4-0613' : gpt_4_0613, 'gpt-4-0613' : gpt_4_0613,