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"] |