puter1 / Dockerfile
anatoli72's picture
Update Dockerfile
933e2ba verified
# ── Этап сборки ──
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"]