sft0farid commited on
Commit
acb23d9
·
verified ·
1 Parent(s): e2dd6a4

Update Dockerfile

Browse files
Files changed (1) hide show
  1. 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. Kiro-Go бинарник
25
  COPY --from=kiro-builder /kiro-go /usr/local/bin/kiro-go
26
- RUN chmod +x /usr/local/bin/kiro-go
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
- # 5. Non-root пользователь
34
  RUN useradd -m -u 1000 user
35
 
36
- # 6. Директории
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
- # 7. supervisord.conf
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
- # 8. Скрипт zrok
96
- RUN echo '#!/bin/bash' > /app/start_zrok.sh \
97
- && echo 'if [ -z "$ZROK_TOKEN" ] || [ -z "$ZROK_SHARE_NAME" ]; then' >> /app/start_zrok.sh \
98
- && echo ' echo "ZROK_TOKEN or ZROK_SHARE_NAME not set, skipping zrok"' >> /app/start_zrok.sh \
99
- && echo ' sleep infinity' >> /app/start_zrok.sh \
100
- && echo 'fi' >> /app/start_zrok.sh \
101
- && echo 'zrok enable "$ZROK_TOKEN" --headless 2>/dev/null || true' >> /app/start_zrok.sh \
102
- && echo 'exec zrok share reserved "$ZROK_SHARE_NAME" --headless' >> /app/start_zrok.sh \
 
103
  && chmod +x /app/start_zrok.sh
104
 
105
- # 9. Entrypoint
106
- RUN echo '#!/bin/bash' > /app/start.sh \
107
- && echo 'if [ ! -L /app/aiclient2api/configs ]; then' >> /app/start.sh \
108
- && echo ' rm -rf /app/aiclient2api/configs' >> /app/start.sh \
109
- && echo ' ln -s /data/aiclient2api/configs /app/aiclient2api/configs' >> /app/start.sh \
110
- && echo 'fi' >> /app/start.sh \
111
- && echo 'exec /usr/bin/supervisord -c /data/supervisor/conf.d/supervisord.conf' >> /app/start.sh \
112
  && chmod +x /app/start.sh
113
 
114
- # 10. Устанавливаем приложения под user
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