Update Dockerfile
Browse files- Dockerfile +34 -27
Dockerfile
CHANGED
|
@@ -1,10 +1,20 @@
|
|
| 1 |
# syntax=docker/dockerfile:1.4
|
|
|
|
|
|
|
| 2 |
FROM golang:1.22-alpine AS kiro-builder
|
| 3 |
RUN apk add --no-cache git
|
| 4 |
RUN git clone https://github.com/Quorinex/Kiro-Go.git /src \
|
| 5 |
&& cd /src \
|
| 6 |
&& go build -o /kiro-go .
|
| 7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
# ─────────────────────────────────────────────
|
| 9 |
FROM python:3.11-slim
|
| 10 |
|
|
@@ -21,19 +31,15 @@ RUN wget -q https://github.com/openziti/zrok/releases/download/v0.4.42/zrok_0.4.
|
|
| 21 |
&& chmod +x /usr/local/bin/zrok \
|
| 22 |
&& rm zrok_0.4.42_linux_amd64.tar.gz
|
| 23 |
|
| 24 |
-
# 3.
|
| 25 |
COPY --from=kiro-builder /kiro-go /usr/local/bin/kiro-go
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
# 4. New API бинарник
|
| 29 |
-
RUN wget -q https://github.com/QuantumNous/new-api/releases/latest/download/new-api-linux-amd64 \
|
| 30 |
-
-O /usr/local/bin/new-api \
|
| 31 |
-
&& chmod +x /usr/local/bin/new-api
|
| 32 |
|
| 33 |
-
#
|
| 34 |
RUN useradd -m -u 1000 user
|
| 35 |
|
| 36 |
-
#
|
| 37 |
RUN mkdir -p \
|
| 38 |
/app/aiclient2api \
|
| 39 |
/data/aiclient2api/configs \
|
|
@@ -43,7 +49,7 @@ RUN mkdir -p \
|
|
| 43 |
/data/supervisor/run \
|
| 44 |
&& chown -R user:user /app /data
|
| 45 |
|
| 46 |
-
#
|
| 47 |
RUN echo '[supervisord]' > /data/supervisor/conf.d/supervisord.conf \
|
| 48 |
&& echo 'nodaemon=true' >> /data/supervisor/conf.d/supervisord.conf \
|
| 49 |
&& echo 'logfile=/dev/stdout' >> /data/supervisor/conf.d/supervisord.conf \
|
|
@@ -92,30 +98,31 @@ RUN echo '[supervisord]'
|
|
| 92 |
&& echo 'stderr_logfile=/dev/stderr' >> /data/supervisor/conf.d/supervisord.conf \
|
| 93 |
&& echo 'stderr_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf
|
| 94 |
|
| 95 |
-
#
|
| 96 |
-
RUN echo '#!/bin/bash'
|
| 97 |
-
&& echo 'if [ -z "$ZROK_TOKEN" ] || [ -z "$ZROK_SHARE_NAME" ]; then'
|
| 98 |
-
&& echo ' echo "ZROK_TOKEN or ZROK_SHARE_NAME not set, skipping zrok"'
|
| 99 |
-
&& echo ' sleep infinity'
|
| 100 |
-
&& echo '
|
| 101 |
-
&& echo '
|
| 102 |
-
&& echo '
|
|
|
|
| 103 |
&& chmod +x /app/start_zrok.sh
|
| 104 |
|
| 105 |
-
#
|
| 106 |
-
RUN echo '#!/bin/bash'
|
| 107 |
-
&& echo 'if [ ! -L /app/aiclient2api/configs ]; then'
|
| 108 |
-
&& echo ' rm -rf /app/aiclient2api/configs'
|
| 109 |
-
&& echo ' ln -s /data/aiclient2api/configs /app/aiclient2api/configs'
|
| 110 |
-
&& echo 'fi'
|
| 111 |
-
&& echo 'exec /usr/bin/supervisord -c /data/supervisor/conf.d/supervisord.conf'
|
| 112 |
&& chmod +x /app/start.sh
|
| 113 |
|
| 114 |
-
#
|
| 115 |
USER user
|
| 116 |
WORKDIR /app
|
| 117 |
|
| 118 |
-
# AIClient2API
|
| 119 |
RUN git clone https://github.com/justlovemaki/AIClient2API.git /app/aiclient2api \
|
| 120 |
&& cd /app/aiclient2api \
|
| 121 |
&& npm install
|
|
|
|
| 1 |
# syntax=docker/dockerfile:1.4
|
| 2 |
+
|
| 3 |
+
# Builder 1: Kiro-Go
|
| 4 |
FROM golang:1.22-alpine AS kiro-builder
|
| 5 |
RUN apk add --no-cache git
|
| 6 |
RUN git clone https://github.com/Quorinex/Kiro-Go.git /src \
|
| 7 |
&& cd /src \
|
| 8 |
&& go build -o /kiro-go .
|
| 9 |
|
| 10 |
+
# Builder 2: New API
|
| 11 |
+
FROM golang:1.22-alpine AS newapi-builder
|
| 12 |
+
RUN apk add --no-cache git nodejs npm
|
| 13 |
+
RUN git clone https://github.com/QuantumNous/new-api.git /src
|
| 14 |
+
WORKDIR /src
|
| 15 |
+
RUN npm install && npm run build
|
| 16 |
+
RUN go build -o /new-api .
|
| 17 |
+
|
| 18 |
# ─────────────────────────────────────────────
|
| 19 |
FROM python:3.11-slim
|
| 20 |
|
|
|
|
| 31 |
&& chmod +x /usr/local/bin/zrok \
|
| 32 |
&& rm zrok_0.4.42_linux_amd64.tar.gz
|
| 33 |
|
| 34 |
+
# 3. Бинарники из builder-стадий
|
| 35 |
COPY --from=kiro-builder /kiro-go /usr/local/bin/kiro-go
|
| 36 |
+
COPY --from=newapi-builder /new-api /usr/local/bin/new-api
|
| 37 |
+
RUN chmod +x /usr/local/bin/kiro-go /usr/local/bin/new-api
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
|
| 39 |
+
# 4. Non-root пользователь
|
| 40 |
RUN useradd -m -u 1000 user
|
| 41 |
|
| 42 |
+
# 5. Директории
|
| 43 |
RUN mkdir -p \
|
| 44 |
/app/aiclient2api \
|
| 45 |
/data/aiclient2api/configs \
|
|
|
|
| 49 |
/data/supervisor/run \
|
| 50 |
&& chown -R user:user /app /data
|
| 51 |
|
| 52 |
+
# 6. supervisord.conf
|
| 53 |
RUN echo '[supervisord]' > /data/supervisor/conf.d/supervisord.conf \
|
| 54 |
&& echo 'nodaemon=true' >> /data/supervisor/conf.d/supervisord.conf \
|
| 55 |
&& echo 'logfile=/dev/stdout' >> /data/supervisor/conf.d/supervisord.conf \
|
|
|
|
| 98 |
&& echo 'stderr_logfile=/dev/stderr' >> /data/supervisor/conf.d/supervisord.conf \
|
| 99 |
&& echo 'stderr_logfile_maxbytes=0' >> /data/supervisor/conf.d/supervisord.conf
|
| 100 |
|
| 101 |
+
# 7. Скрипт zrok
|
| 102 |
+
RUN echo '#!/bin/bash' > /app/start_zrok.sh \
|
| 103 |
+
&& echo 'if [ -z "$ZROK_TOKEN" ] || [ -z "$ZROK_SHARE_NAME" ]; then' >> /app/start_zrok.sh \
|
| 104 |
+
&& echo ' echo "ZROK_TOKEN or ZROK_SHARE_NAME not set, skipping zrok"' >> /app/start_zrok.sh \
|
| 105 |
+
&& echo ' sleep infinity' >> /app/start_zrok.sh \
|
| 106 |
+
&& echo ' exit 0' >> /app/start_zrok.sh \
|
| 107 |
+
&& echo 'fi' >> /app/start_zrok.sh \
|
| 108 |
+
&& echo 'zrok enable "$ZROK_TOKEN" --headless 2>/dev/null || true' >> /app/start_zrok.sh \
|
| 109 |
+
&& echo 'exec zrok share reserved "$ZROK_SHARE_NAME" --headless' >> /app/start_zrok.sh \
|
| 110 |
&& chmod +x /app/start_zrok.sh
|
| 111 |
|
| 112 |
+
# 8. Entrypoint
|
| 113 |
+
RUN echo '#!/bin/bash' > /app/start.sh \
|
| 114 |
+
&& echo 'if [ ! -L /app/aiclient2api/configs ]; then' >> /app/start.sh \
|
| 115 |
+
&& echo ' rm -rf /app/aiclient2api/configs' >> /app/start.sh \
|
| 116 |
+
&& echo ' ln -s /data/aiclient2api/configs /app/aiclient2api/configs' >> /app/start.sh \
|
| 117 |
+
&& echo 'fi' >> /app/start.sh \
|
| 118 |
+
&& echo 'exec /usr/bin/supervisord -c /data/supervisor/conf.d/supervisord.conf' >> /app/start.sh \
|
| 119 |
&& chmod +x /app/start.sh
|
| 120 |
|
| 121 |
+
# 9. Устанавливаем приложения под user
|
| 122 |
USER user
|
| 123 |
WORKDIR /app
|
| 124 |
|
| 125 |
+
# AIClient2API — latest main
|
| 126 |
RUN git clone https://github.com/justlovemaki/AIClient2API.git /app/aiclient2api \
|
| 127 |
&& cd /app/aiclient2api \
|
| 128 |
&& npm install
|