File size: 1,285 Bytes
9e25980
933e2ba
9e25980
ac2302a
 
933e2ba
9e25980
ac2302a
9e25980
 
933e2ba
ac2302a
9e25980
933e2ba
9e25980
 
ac2302a
933e2ba
9e25980
 
933e2ba
0345d90
ac2302a
0345d90
9e25980
0345d90
9e25980
ac2302a
9e25980
 
0345d90
 
 
9e25980
ac2302a
0345d90
9e25980
 
 
 
0345d90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# ── Этап сборки ──
FROM rust:1.86-slim AS builder

WORKDIR /app

# Системные зависимости для компиляции TLS/SSL
RUN apt-get update && apt-get install -y --no-install-recommends \
    ca-certificates pkg-config libssl-dev \
    && rm -rf /var/lib/apt/lists/*

# Копируем ТОЛЬКО Cargo.toml (без Cargo.lock)
COPY Cargo.toml ./

# Трюк для кэширования зависимостей
RUN mkdir -p src && echo 'fn main() {}' > src/main.rs
RUN cargo build --release

# Очищаем заглушку, сохраняем кэш deps/
RUN rm -rf src && rm -f target/release/puter-chat-web target/release/deps/puter_chat_web*

# Копируем исходный код и финальная сборка
COPY . .
RUN cargo build --release

# ── Этап запуска ──
FROM debian:bookworm-slim

RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates wget \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY --from=builder /app/target/release/puter-chat-web .
COPY static ./static

ENV PORT=7860
EXPOSE 7860

HEALTHCHECK --interval=30s --timeout=3s --start-period=15s \
  CMD wget --no-verbose --tries=1 --spider http://localhost:7860/ || exit 1

CMD ["./puter-chat-web"]