sft0farid commited on
Commit
2d80cb2
·
verified ·
1 Parent(s): 56ffd78

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +75 -74
Dockerfile CHANGED
@@ -21,16 +21,14 @@ 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 бинарник из builder-стадии
25
  COPY --from=kiro-builder /kiro-go /usr/local/bin/kiro-go
26
  RUN chmod +x /usr/local/bin/kiro-go
27
 
28
- # 4. Non-root пользователь (uid=1000 — требование HF Spaces)
29
  RUN useradd -m -u 1000 user
30
 
31
- # 5. Директории:
32
- # /app — код приложений
33
- # /data — конфиги, базы, рантайм (сюда монтить persistent storage на HF)
34
  RUN mkdir -p \
35
  /app/aiclient2api \
36
  /app/bifrost \
@@ -41,75 +39,78 @@ RUN mkdir -p \
41
  /data/supervisor/run \
42
  && chown -R user:user /app /data
43
 
44
- # 6. supervisord.conf
45
- RUN printf '[supervisord]\n\
46
- nodaemon=true\n\
47
- logfile=/dev/stdout\n\
48
- logfile_maxbytes=0\n\
49
- pidfile=/data/supervisor/run/supervisord.pid\n\
50
- \n\
51
- [program:bifrost]\n\
52
- command=python /app/bifrost/main.py --port 7860 --host 0.0.0.0\n\
53
- directory=/data/bifrost\n\
54
- autostart=true\n\
55
- autorestart=true\n\
56
- stdout_logfile=/dev/stdout\n\
57
- stdout_logfile_maxbytes=0\n\
58
- stderr_logfile=/dev/stderr\n\
59
- stderr_logfile_maxbytes=0\n\
60
- \n\
61
- [program:aiclient]\n\
62
- command=node /app/aiclient2api/src/core/master.js\n\
63
- environment=PORT=3000\n\
64
- directory=/app/aiclient2api\n\
65
- autostart=true\n\
66
- autorestart=true\n\
67
- stdout_logfile=/dev/stdout\n\
68
- stdout_logfile_maxbytes=0\n\
69
- stderr_logfile=/dev/stderr\n\
70
- stderr_logfile_maxbytes=0\n\
71
- \n\
72
- [program:kirogo]\n\
73
- command=kiro-go\n\
74
- environment=PORT=8082,ADMIN_PASSWORD=%(ENV_KIRO_ADMIN_PASSWORD)s\n\
75
- directory=/data/kirogo\n\
76
- autostart=true\n\
77
- autorestart=true\n\
78
- stdout_logfile=/dev/stdout\n\
79
- stdout_logfile_maxbytes=0\n\
80
- stderr_logfile=/dev/stderr\n\
81
- stderr_logfile_maxbytes=0\n\
82
- \n\
83
- [program:zrok]\n\
84
- command=/app/start_zrok.sh\n\
85
- autostart=true\n\
86
- autorestart=true\n\
87
- stdout_logfile=/dev/stdout\n\
88
- stdout_logfile_maxbytes=0\n\
89
- stderr_logfile=/dev/stderr\n\
90
- stderr_logfile_maxbytes=0\n\
91
- ' > /data/supervisor/conf.d/supervisord.conf
92
-
93
- # 7. Скрипт zrok — не падает если токен не задан
94
- RUN printf '#!/bin/bash\n\
95
- if [ -z "$ZROK_TOKEN" ] || [ -z "$ZROK_SHARE_NAME" ]; then\n\
96
- echo "ZROK_TOKEN or ZROK_SHARE_NAME not set, skipping zrok"\n\
97
- sleep infinity\n\
98
- fi\n\
99
- zrok enable "$ZROK_TOKEN" --headless 2>/dev/null || true\n\
100
- exec zrok share reserved "$ZROK_SHARE_NAME" --headless\n\
101
- ' > /app/start_zrok.sh && chmod +x /app/start_zrok.sh
102
-
103
- # 8. Entrypoint — симлинк configs + запуск супервизора
104
- RUN printf '#!/bin/bash\n\
105
- # AIClient2API пишет конфиги в /app/aiclient2api/configs\n\
106
- # симлинкаем туда /data/aiclient2api/configs чтобы данные были в /data\n\
107
- if [ ! -L /app/aiclient2api/configs ]; then\n\
108
- rm -rf /app/aiclient2api/configs\n\
109
- ln -s /data/aiclient2api/configs /app/aiclient2api/configs\n\
110
- fi\n\
111
- exec /usr/bin/supervisord -c /data/supervisor/conf.d/supervisord.conf\n\
112
- ' > /app/start.sh && chmod +x /app/start.sh
 
 
 
113
 
114
  # 9. Устанавливаем приложения под user
115
  USER user
 
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. Non-root пользователь
29
  RUN useradd -m -u 1000 user
30
 
31
+ # 5. Директории
 
 
32
  RUN mkdir -p \
33
  /app/aiclient2api \
34
  /app/bifrost \
 
39
  /data/supervisor/run \
40
  && chown -R user:user /app /data
41
 
42
+ # 6. supervisord.conf — через cat heredoc, % не интерпретируется
43
+ RUN cat > /data/supervisor/conf.d/supervisord.conf << 'EOF'
44
+ [supervisord]
45
+ nodaemon=true
46
+ logfile=/dev/stdout
47
+ logfile_maxbytes=0
48
+ pidfile=/data/supervisor/run/supervisord.pid
49
+
50
+ [program:bifrost]
51
+ command=python /app/bifrost/main.py --port 7860 --host 0.0.0.0
52
+ directory=/data/bifrost
53
+ autostart=true
54
+ autorestart=true
55
+ stdout_logfile=/dev/stdout
56
+ stdout_logfile_maxbytes=0
57
+ stderr_logfile=/dev/stderr
58
+ stderr_logfile_maxbytes=0
59
+
60
+ [program:aiclient]
61
+ command=node /app/aiclient2api/src/core/master.js
62
+ environment=PORT=3000
63
+ directory=/app/aiclient2api
64
+ autostart=true
65
+ autorestart=true
66
+ stdout_logfile=/dev/stdout
67
+ stdout_logfile_maxbytes=0
68
+ stderr_logfile=/dev/stderr
69
+ stderr_logfile_maxbytes=0
70
+
71
+ [program:kirogo]
72
+ command=kiro-go
73
+ environment=PORT=8082,ADMIN_PASSWORD=%(ENV_KIRO_ADMIN_PASSWORD)s
74
+ directory=/data/kirogo
75
+ autostart=true
76
+ autorestart=true
77
+ stdout_logfile=/dev/stdout
78
+ stdout_logfile_maxbytes=0
79
+ stderr_logfile=/dev/stderr
80
+ stderr_logfile_maxbytes=0
81
+
82
+ [program:zrok]
83
+ command=/app/start_zrok.sh
84
+ autostart=true
85
+ autorestart=true
86
+ stdout_logfile=/dev/stdout
87
+ stdout_logfile_maxbytes=0
88
+ stderr_logfile=/dev/stderr
89
+ stderr_logfile_maxbytes=0
90
+ EOF
91
+
92
+ # 7. Скрипт zrok
93
+ RUN cat > /app/start_zrok.sh << 'EOF'
94
+ #!/bin/bash
95
+ if [ -z "$ZROK_TOKEN" ] || [ -z "$ZROK_SHARE_NAME" ]; then
96
+ echo "ZROK_TOKEN or ZROK_SHARE_NAME not set, skipping zrok"
97
+ sleep infinity
98
+ fi
99
+ zrok enable "$ZROK_TOKEN" --headless 2>/dev/null || true
100
+ exec zrok share reserved "$ZROK_SHARE_NAME" --headless
101
+ EOF
102
+ RUN chmod +x /app/start_zrok.sh
103
+
104
+ # 8. Entrypoint
105
+ RUN cat > /app/start.sh << 'EOF'
106
+ #!/bin/bash
107
+ if [ ! -L /app/aiclient2api/configs ]; then
108
+ rm -rf /app/aiclient2api/configs
109
+ ln -s /data/aiclient2api/configs /app/aiclient2api/configs
110
+ fi
111
+ exec /usr/bin/supervisord -c /data/supervisor/conf.d/supervisord.conf
112
+ EOF
113
+ RUN chmod +x /app/start.sh
114
 
115
  # 9. Устанавливаем приложения под user
116
  USER user