Update Dockerfile
Browse files- Dockerfile +24 -10
Dockerfile
CHANGED
|
@@ -1,11 +1,9 @@
|
|
| 1 |
# syntax=docker/dockerfile:1.4
|
| 2 |
|
| 3 |
-
# Источники готовых образов
|
| 4 |
FROM calciumion/new-api:latest AS newapi-source
|
| 5 |
FROM justlikemaki/aiclient-2-api:latest AS aiclient-source
|
| 6 |
FROM ghcr.io/quorinex/kiro-go:latest AS kirogo-source
|
| 7 |
|
| 8 |
-
# ─────────────────────────────────────────────
|
| 9 |
FROM python:3.11-slim
|
| 10 |
|
| 11 |
# 1. Системные зависимости + Node.js
|
|
@@ -41,6 +39,7 @@ RUN mkdir -p \
|
|
| 41 |
/data/aiclient2api/configs \
|
| 42 |
/data/kirogo \
|
| 43 |
/data/newapi \
|
|
|
|
| 44 |
/data/supervisor/conf.d \
|
| 45 |
/data/supervisor/run \
|
| 46 |
&& chown -R user:user /app /data
|
|
@@ -89,20 +88,35 @@ RUN echo '[supervisord]'
|
|
| 89 |
&& echo 'command=/app/start_zrok.sh' >> /data/supervisor/conf.d/supervisord.conf \
|
| 90 |
&& echo 'autostart=true' >> /data/supervisor/conf.d/supervisord.conf \
|
| 91 |
&& echo 'autorestart=true' >> /data/supervisor/conf.d/supervisord.conf \
|
|
|
|
|
|
|
| 92 |
&& echo 'stdout_logfile=/dev/stdout' >> /data/supervisor/conf.d/supervisord.conf \
|
| 93 |
&& echo 'stdout_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf \
|
| 94 |
&& echo 'stderr_logfile=/dev/stderr' >> /data/supervisor/conf.d/supervisord.conf \
|
| 95 |
&& echo 'stderr_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf
|
| 96 |
|
| 97 |
# 7. Скрипт zrok
|
| 98 |
-
RUN echo '#!/bin/bash'
|
| 99 |
-
&& echo 'if [ -z "$ZROK_TOKEN" ] || [ -z "$ZROK_SHARE_NAME" ]; then'
|
| 100 |
-
&& echo ' echo "ZROK_TOKEN or ZROK_SHARE_NAME not set, skipping zrok"'
|
| 101 |
-
&& echo ' sleep infinity'
|
| 102 |
-
&& echo ' exit 0'
|
| 103 |
-
&& echo 'fi'
|
| 104 |
-
&& echo '
|
| 105 |
-
&& echo '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
&& chmod +x /app/start_zrok.sh
|
| 107 |
|
| 108 |
# 8. Entrypoint
|
|
|
|
| 1 |
# syntax=docker/dockerfile:1.4
|
| 2 |
|
|
|
|
| 3 |
FROM calciumion/new-api:latest AS newapi-source
|
| 4 |
FROM justlikemaki/aiclient-2-api:latest AS aiclient-source
|
| 5 |
FROM ghcr.io/quorinex/kiro-go:latest AS kirogo-source
|
| 6 |
|
|
|
|
| 7 |
FROM python:3.11-slim
|
| 8 |
|
| 9 |
# 1. Системные зависимости + Node.js
|
|
|
|
| 39 |
/data/aiclient2api/configs \
|
| 40 |
/data/kirogo \
|
| 41 |
/data/newapi \
|
| 42 |
+
/data/zrok-home \
|
| 43 |
/data/supervisor/conf.d \
|
| 44 |
/data/supervisor/run \
|
| 45 |
&& chown -R user:user /app /data
|
|
|
|
| 88 |
&& echo 'command=/app/start_zrok.sh' >> /data/supervisor/conf.d/supervisord.conf \
|
| 89 |
&& echo 'autostart=true' >> /data/supervisor/conf.d/supervisord.conf \
|
| 90 |
&& echo 'autorestart=true' >> /data/supervisor/conf.d/supervisord.conf \
|
| 91 |
+
&& echo 'startsecs=5' >> /data/supervisor/conf.d/supervisord.conf \
|
| 92 |
+
&& echo 'startretries=3' >> /data/supervisor/conf.d/supervisord.conf \
|
| 93 |
&& echo 'stdout_logfile=/dev/stdout' >> /data/supervisor/conf.d/supervisord.conf \
|
| 94 |
&& echo 'stdout_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf \
|
| 95 |
&& echo 'stderr_logfile=/dev/stderr' >> /data/supervisor/conf.d/supervisord.conf \
|
| 96 |
&& echo 'stderr_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf
|
| 97 |
|
| 98 |
# 7. Скрипт zrok
|
| 99 |
+
RUN echo '#!/bin/bash' > /app/start_zrok.sh \
|
| 100 |
+
&& echo 'if [ -z "$ZROK_TOKEN" ] || [ -z "$ZROK_SHARE_NAME" ]; then' >> /app/start_zrok.sh \
|
| 101 |
+
&& echo ' echo "ZROK_TOKEN or ZROK_SHARE_NAME not set, skipping zrok"' >> /app/start_zrok.sh \
|
| 102 |
+
&& echo ' sleep infinity' >> /app/start_zrok.sh \
|
| 103 |
+
&& echo ' exit 0' >> /app/start_zrok.sh \
|
| 104 |
+
&& echo 'fi' >> /app/start_zrok.sh \
|
| 105 |
+
&& echo 'export HOME=/data/zrok-home' >> /app/start_zrok.sh \
|
| 106 |
+
&& echo 'mkdir -p "$HOME"' >> /app/start_zrok.sh \
|
| 107 |
+
&& echo 'if [ ! -f "$HOME/.zrok/environment.json" ]; then' >> /app/start_zrok.sh \
|
| 108 |
+
&& echo ' echo "Enabling zrok environment..."' >> /app/start_zrok.sh \
|
| 109 |
+
&& echo ' zrok enable "$ZROK_TOKEN" --headless' >> /app/start_zrok.sh \
|
| 110 |
+
&& echo ' if [ $? -ne 0 ]; then' >> /app/start_zrok.sh \
|
| 111 |
+
&& echo ' echo "zrok enable failed"' >> /app/start_zrok.sh \
|
| 112 |
+
&& echo ' sleep infinity' >> /app/start_zrok.sh \
|
| 113 |
+
&& echo ' exit 1' >> /app/start_zrok.sh \
|
| 114 |
+
&& echo ' fi' >> /app/start_zrok.sh \
|
| 115 |
+
&& echo 'else' >> /app/start_zrok.sh \
|
| 116 |
+
&& echo ' echo "zrok already enabled, skipping enable"' >> /app/start_zrok.sh \
|
| 117 |
+
&& echo 'fi' >> /app/start_zrok.sh \
|
| 118 |
+
&& echo 'echo "Starting zrok share reserved: $ZROK_SHARE_NAME"' >> /app/start_zrok.sh \
|
| 119 |
+
&& echo 'exec zrok share reserved "$ZROK_SHARE_NAME" --headless' >> /app/start_zrok.sh \
|
| 120 |
&& chmod +x /app/start_zrok.sh
|
| 121 |
|
| 122 |
# 8. Entrypoint
|