anatoli72 commited on
Commit
d42beec
·
verified ·
1 Parent(s): cc1740d

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +54 -20
Dockerfile CHANGED
@@ -1,25 +1,59 @@
1
- FROM node:24-alpine
 
2
 
3
- RUN apk add --no-cache git bash
 
 
4
 
5
  WORKDIR /app
6
- RUN git clone https://github.com/HeyPuter/puter.git . && \
7
- npm install
8
-
9
- # ПАТЧ: отключаем проверку Host в webpack-dev-server
10
- RUN find . -path "*/webpack.config.js" -exec sed -i \
11
- -e 's/host: "localhost"/host: "0.0.0.0"/g' \
12
- -e 's/disableHostCheck: false/disableHostCheck: true/g' \
13
- -e 's/allowedHosts: .*/allowedHosts: "all",/g' \
14
- {} \; && \
15
- # Дополнительно для конфигов в src/gui
16
- find src/gui -name "webpack.config.js" -exec sed -i \
17
- -e 's/host: "localhost"/host: "0.0.0.0"/g' \
18
- -e 's/disableHostCheck: false/disableHostCheck: true/g' \
19
- -e 's/allowedHosts: .*/allowedHosts: "all",/g' \
20
- {} \; || true
21
-
22
- ENV PORT=7860
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  EXPOSE 7860
24
 
25
- CMD ["npm", "start"]
 
 
 
 
 
 
1
+ # Используйте актуальную версию Node
2
+ FROM node:22-alpine AS build
3
 
4
+ # Установка зависимостей для сборки
5
+ RUN apk add --no-cache git python3 make g++ \
6
+ && ln -sf /usr/bin/python3 /usr/bin/python
7
 
8
  WORKDIR /app
9
+
10
+ # Копируем manifest-файлы первым слоем для кэширования
11
+ COPY package.json package-lock.json ./
12
+ RUN test -f package.json && test -f package-lock.json
13
+
14
+ # Копируем исходный код
15
+ COPY . .
16
+
17
+ # Обновляем npm и устанавливаем зависимости
18
+ RUN npm install -g npm@latest && \
19
+ npm ci --ignore-scripts
20
+
21
+ # Собираем GUI (если требуется)
22
+ RUN cd src/gui && npm run build 2>/dev/null || true
23
+
24
+ # Production stage
25
+ FROM node:22-alpine
26
+
27
+ LABEL repo="https://github.com/HeyPuter/puter"
28
+ LABEL license="AGPL-3.0"
29
+
30
+ # Git нужен Puter для определения версии
31
+ RUN apk add --no-cache git
32
+
33
+ WORKDIR /opt/puter/app
34
+
35
+ # Копируем артефакты сборки
36
+ COPY --from=build /app/src/gui/dist ./dist 2>/dev/null || true
37
+ COPY --from=build /app/node_modules ./node_modules
38
+ COPY --from=build /app/package*.json ./
39
+ COPY --from=build /app/src ./src
40
+ COPY --from=build /app/tools ./tools
41
+
42
+ # Настройка прав для non-root пользователя
43
+ RUN chown -R node:node /opt/puter/app
44
+ USER node
45
+
46
+ # Переменные окружения для Hugging Face Spaces
47
+ ENV PORT=7860 \
48
+ NODE_ENV=production \
49
+ NO_VAR_RUNTIME=1 \
50
+ HOST=0.0.0.0
51
+
52
  EXPOSE 7860
53
 
54
+ # Healthcheck для Spaces
55
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=40s \
56
+ CMD wget --no-verbose --tries=1 --spider http://localhost:7860/test || exit 1
57
+
58
+ # Запуск через официальный скрипт Puter
59
+ CMD ["node", "./tools/run-selfhosted.js"]