Download Dockerfile from sft0farid/code: direct link, hf CLI and curl.
- Browser
- Download file 10.3 kB
-
https://huggingface.co/spaces/sft0farid/code/resolve/feb8dfd49da2de5e9ef6625438ec733de0102115/Dockerfile
- Command line
-
hf download hf://spaces/sft0farid/code@feb8dfd49da2de5e9ef6625438ec733de0102115/Dockerfile
-
curl -L -o Dockerfile https://huggingface.co/spaces/sft0farid/code/resolve/feb8dfd49da2de5e9ef6625438ec733de0102115/Dockerfile
10.3 kB
| # syntax=docker/dockerfile:1.4 | |
| FROM calciumion/new-api:latest AS newapi-source | |
| FROM justlikemaki/aiclient-2-api:latest AS aiclient-source | |
| FROM ghcr.io/quorinex/kiro-go:latest AS kirogo-source | |
| # ───────────────────────────────────────────── | |
| FROM python:3.11-slim | |
| # 1. Системные зависимости + Node.js | |
| RUN apt-get update && apt-get install -y curl gnupg supervisor \ | |
| && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ | |
| && apt-get install -y nodejs \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # 2. zrok v2 — latest | |
| RUN ARCH=$(dpkg --print-architecture) \ | |
| && case "$ARCH" in \ | |
| amd64) GOARCH=amd64 ;; \ | |
| arm64) GOARCH=arm64 ;; \ | |
| *) echo "Unsupported arch: $ARCH"; exit 1 ;; \ | |
| esac \ | |
| && VERSION=$(curl -sSf https://api.github.com/repos/openziti/zrok/releases/latest | grep '"tag_name"' | cut -d'"' -f4) \ | |
| && curl -sSfL "https://github.com/openziti/zrok/releases/download/${VERSION}/zrok_${VERSION#v}_linux_${GOARCH}.tar.gz" \ | |
| | tar -xz -C /tmp \ | |
| && install -o root -g root /tmp/zrok2 /usr/local/bin/zrok2 \ | |
| && chmod +x /usr/local/bin/zrok2 | |
| # 3. Копируем из готовых образов | |
| COPY --from=newapi-source /new-api /usr/local/bin/new-api | |
| COPY --from=kirogo-source /app/kiro-go /usr/local/bin/kiro-go | |
| COPY --from=aiclient-source /app /app/aiclient2api | |
| RUN chmod +x /usr/local/bin/new-api /usr/local/bin/kiro-go | |
| # 4. Non-root пользователь | |
| RUN useradd -m -u 1000 user | |
| # 5. Директории | |
| RUN mkdir -p \ | |
| /data/kirogo \ | |
| /data/newapi \ | |
| /data/zrok-home \ | |
| /data/supervisor/conf.d \ | |
| /data/supervisor/run \ | |
| && chown -R user:user /app /data | |
| # 6. supervisord.conf | |
| RUN echo '[supervisord]' > /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'nodaemon=true' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'logfile=/dev/stdout' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'pidfile=/data/supervisor/run/supervisord.pid' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'user=root' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo '' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo '[program:newapi]' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'command=new-api --port 7860 --log-dir /data/newapi/logs' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'environment=TZ="UTC"' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'directory=/data/newapi' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'autostart=true' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'autorestart=true' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stdout_logfile=/dev/stdout' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stdout_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stderr_logfile=/dev/stderr' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stderr_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo '' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo '[program:aiclient]' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'command=node /app/aiclient2api/src/core/master.js' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'environment=PORT=3000' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'directory=/app/aiclient2api' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'autostart=true' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'autorestart=true' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stdout_logfile=/dev/stdout' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stdout_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stderr_logfile=/dev/stderr' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stderr_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo '' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo '[program:kirogo]' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'command=kiro-go' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'environment=PORT=8082' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'directory=/data/kirogo' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'autostart=true' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'autorestart=true' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stdout_logfile=/dev/stdout' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stdout_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stderr_logfile=/dev/stderr' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stderr_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo '' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo '[program:zrok]' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'command=/app/start_zrok.sh' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'autostart=true' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'autorestart=true' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'startsecs=5' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'startretries=3' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stdout_logfile=/dev/stdout' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stdout_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stderr_logfile=/dev/stderr' >> /data/supervisor/conf.d/supervisord.conf \ | |
| && echo 'stderr_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf | |
| RUN echo '#!/bin/bash' > /app/start_zrok.sh && \ | |
| echo 'export HOME=/data/zrok-home' >> /app/start_zrok.sh && \ | |
| echo 'mkdir -p "$HOME"' >> /app/start_zrok.sh && \ | |
| echo 'cd "$HOME"' >> /app/start_zrok.sh && \ | |
| echo '# 1. Проверяем статус. Если среда жива — не трогаем её' >> /app/start_zrok.sh && \ | |
| echo 'if zrok2 status > /dev/null 2>&1; then' >> /app/start_zrok.sh && \ | |
| echo ' echo "[zrok] Environment healthy, reusing existing identity."' >> /app/start_zrok.sh && \ | |
| echo 'else' >> /app/start_zrok.sh && \ | |
| echo ' echo "[zrok] Environment invalid or missing. Cleaning and Re-enabling..."' >> /app/start_zrok.sh && \ | |
| echo ' rm -rf .zrok2' >> /app/start_zrok.sh && \ | |
| echo ' if [ -z "$ZROK2_TOKEN" ]; then echo "ERROR: ZROK2_TOKEN not set"; exit 1; fi' >> /app/start_zrok.sh && \ | |
| echo ' zrok2 enable "$ZROK2_TOKEN" --headless' >> /app/start_zrok.sh && \ | |
| echo 'fi' >> /app/start_zrok.sh && \ | |
| echo '# 2. Ждем API приложения' >> /app/start_zrok.sh && \ | |
| echo 'until curl -s http://127.0.0.1:7860/ > /dev/null; do sleep 2; done' >> /app/start_zrok.sh && \ | |
| echo '# 3. Запускаем шару. Если падает - пробуем снова через 5 секунд' >> /app/start_zrok.sh && \ | |
| echo 'while true; do' >> /app/start_zrok.sh && \ | |
| echo ' zrok2 share public http://127.0.0.1:7860' >> /app/start_zrok.sh && \ | |
| echo ' echo "[zrok] Share exited, restarting in 5s..."' >> /app/start_zrok.sh && \ | |
| echo ' sleep 5' >> /app/start_zrok.sh && \ | |
| echo 'done' >> /app/start_zrok.sh && \ | |
| chmod +x /app/start_zrok.sh | |
| # 8. Entrypoint | |
| RUN echo '#!/bin/bash' > /app/start.sh \ | |
| && echo 'exec /usr/bin/supervisord -c /data/supervisor/conf.d/supervisord.conf' >> /app/start.sh \ | |
| && chmod +x /app/start.sh | |
| EXPOSE 7860 | |
| CMD ["/app/start.sh"] |