# ── Этап сборки ── 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"]