summaryrefslogtreecommitdiffstats
path: root/docker
diff options
context:
space:
mode:
authorH Lohaus <hlohaus@users.noreply.github.com>2023-12-06 12:02:41 +0100
committerGitHub <noreply@github.com>2023-12-06 12:02:41 +0100
commitf962993b8dac225d85f9fbb59be188e263af1c0b (patch)
treeae153b027ad5a2679b4f1fde881d61cc0e1276b4 /docker
parent~ | g4f `v-0.1.9.1` (diff)
parentImprove docker image (diff)
downloadgpt4free-f962993b8dac225d85f9fbb59be188e263af1c0b.tar
gpt4free-f962993b8dac225d85f9fbb59be188e263af1c0b.tar.gz
gpt4free-f962993b8dac225d85f9fbb59be188e263af1c0b.tar.bz2
gpt4free-f962993b8dac225d85f9fbb59be188e263af1c0b.tar.lz
gpt4free-f962993b8dac225d85f9fbb59be188e263af1c0b.tar.xz
gpt4free-f962993b8dac225d85f9fbb59be188e263af1c0b.tar.zst
gpt4free-f962993b8dac225d85f9fbb59be188e263af1c0b.zip
Diffstat (limited to '')
-rw-r--r--docker-compose.yml19
-rw-r--r--docker/Dockerfile43
-rwxr-xr-xdocker/supervisor.conf76
3 files changed, 127 insertions, 11 deletions
diff --git a/docker-compose.yml b/docker-compose.yml
index 43aa6c02..8dfe1f35 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,18 +1,15 @@
version: '3'
services:
- gpt4free-api: &gpt4free
- image: gpt4free:latest
+ gpt4free:
+ image: ghcr.io/xtekky/gpt4free:latest
+ shm_size: 2gb
build:
context: .
- dockerfile: Dockerfile
- cache_from:
- - gpt4free:latest
- ports:
- - '1337:1337'
- command: api
- gpt4free-gui:
- <<: *gpt4free
+ dockerfile: docker/Dockerfile
+ volumes:
+ - .:/app
ports:
- '8080:80'
- command: gui
+ - '1337:1337'
+ - '7900:7900' \ No newline at end of file
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 00000000..0c52940d
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,43 @@
+FROM selenium/node-chrome
+
+ENV SE_SCREEN_WIDTH 1920
+ENV G4F_LOGIN_URL http://localhost:7900/?autoconnect=1&resize=scale&password=secret
+ENV PYTHONUNBUFFERED 1
+
+USER root
+
+# Python packages
+RUN apt-get -qqy update \
+ && apt-get -qqy install \
+ python3 \
+ python-is-python3 \
+ pip
+
+# Cleanup
+RUN rm -rf /var/lib/apt/lists/* /var/cache/apt/* \
+ && apt-get -qyy autoremove \
+ && apt-get -qyy clean
+
+# Update entrypoint
+COPY docker/supervisor.conf /etc/supervisor/conf.d/selenium.conf
+
+# Change background image
+COPY g4f.png /usr/share/images/fluxbox/ubuntu-light.png
+
+# Switch user
+USER 1200
+
+# Set the working directory in the container.
+WORKDIR /app
+
+# Copy the project's requirements file into the container.
+COPY requirements.txt /app/
+
+# 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
+
+# Expose ports
+EXPOSE 80 1337 \ No newline at end of file
diff --git a/docker/supervisor.conf b/docker/supervisor.conf
new file mode 100755
index 00000000..6d82f6c9
--- /dev/null
+++ b/docker/supervisor.conf
@@ -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 \ No newline at end of file