this repo has no description
at main 1.4 kB view raw
1# Use rust image as base 2FROM rust:1.92-slim-bookworm as builder 3 4# Install build dependencies and security updates 5RUN apt-get update && \ 6 apt-get upgrade -y && \ 7 apt-get install -y --no-install-recommends \ 8 pkg-config \ 9 libssl-dev \ 10 && rm -rf /var/apt/lists/* 11 12# Create app directory 13WORKDIR /app 14 15COPY Cargo.toml Cargo.lock ./ 16 17# Create dummy main.rs to build and cache dependencies 18RUN mkdir src && \ 19 echo "fn main() {println!(\"Dummy program\")}" > src/main.rs && \ 20 cargo build --release && \ 21 rm -rf src 22 23# Copy source code 24COPY src ./src 25 26# Build the application 27RUN touch src/main.rs && \ 28 cargo build --release && \ 29 strip target/release/tpp 30 31# RUNTIME STAGE 32FROM debian:bookworm-slim as runtime 33 34RUN apt-get update && \ 35 apt-get upgrade -y && \ 36 apt-get install -y --no-install-recommends \ 37 ca-certificates \ 38 libssl3 \ 39 && rm -rf /var/apt/lists/* 40 41# Create non-root user 42RUN useradd -m -u 1001 -U appuser 43 44# Set working directory 45WORKDIR /app 46 47# Copy binary from builder 48COPY --chown=appuser:appuser --from=builder /app/target/release/tpp /app/app 49 50# Switch to non-root user 51USER appuser 52 53# Expose port 54EXPOSE 3000 55 56# Add healthcheck 57HEALTHCHECK --interval=30s --timeout=3s --start-period=40s --retries=3 \ 58 CMD ["/app/app", "--health-check"] || exit 1 59 60# Run the application 61CMD ["/app/app"] 62