anatoli72 commited on
Commit
9e25980
·
verified ·
1 Parent(s): 4eec2fc

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +40 -9
Dockerfile CHANGED
@@ -1,18 +1,49 @@
1
- # Используем актуальный образ Rust (slim)
2
- FROM rust:slim AS builder
 
 
 
 
 
 
 
 
 
3
  WORKDIR /app
4
- COPY Cargo.toml .
5
- RUN mkdir src && echo 'fn main() {}' > src/main.rs && \
6
- cargo build --release && \
7
- rm -rf src
 
 
 
 
 
 
 
 
8
  COPY . .
9
- RUN cargo build --release --locked
10
 
 
11
  FROM debian:bookworm-slim
12
- RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
 
 
 
 
 
13
  WORKDIR /app
14
  COPY --from=builder /app/target/release/puter-chat-web .
15
  COPY static ./static
16
- ENV PORT=7860
 
 
 
17
  EXPOSE 7860
 
 
 
 
 
18
  CMD ["./puter-chat-web"]
 
1
+ # ── Этап сборки ──
2
+ # Фиксируем версию Rust для стабильности
3
+ FROM rust:1.82-slim AS builder
4
+
5
+ # Устанавливаем минимальные зависимости для компиляции
6
+ RUN apt-get update && apt-get install -y --no-install-recommends \
7
+ ca-certificates \
8
+ pkg-config \
9
+ libssl-dev \
10
+ && rm -rf /var/lib/apt/lists/*
11
+
12
  WORKDIR /app
13
+
14
+ # 1. Копируем только манифесты для кэширования зависимостей
15
+ COPY Cargo.toml Cargo.lock ./
16
+
17
+ # 2. Создаём заглушку для скачивания и компиляции только зависимостей
18
+ RUN mkdir -p src && echo 'fn main() {}' > src/main.rs
19
+ RUN cargo fetch --locked
20
+ RUN cargo build --release
21
+ # Удаляем заглушку, но сохраняем кэш deps/
22
+ RUN rm -rf src && rm -f target/release/puter-chat-web target/release/deps/puter_chat_web*
23
+
24
+ # 3. Копируем исходники и финальная сборка
25
  COPY . .
26
+ RUN cargo build --release --locked --offline
27
 
28
+ # ── Этап запуска ──
29
  FROM debian:bookworm-slim
30
+
31
+ RUN apt-get update && apt-get install -y --no-install-recommends \
32
+ ca-certificates \
33
+ wget \
34
+ && rm -rf /var/lib/apt/lists/*
35
+
36
  WORKDIR /app
37
  COPY --from=builder /app/target/release/puter-chat-web .
38
  COPY static ./static
39
+
40
+ ENV PORT=7860 \
41
+ RUST_LOG=info
42
+
43
  EXPOSE 7860
44
+
45
+ # HEALTHCHECK обязателен для HF Spaces
46
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=15s \
47
+ CMD wget --no-verbose --tries=1 --spider http://localhost:7860/ || exit 1
48
+
49
  CMD ["./puter-chat-web"]