kegani-cli 0.1.3

CLI tool for Kegani framework
Documentation
# Build stage
FROM rust:1.75-slim as builder

WORKDIR /app

# Copy manifests first (for better layer caching)
COPY Cargo.toml Cargo.lock* ./

# Create a dummy src to cache dependencies
RUN mkdir -p src && \
    echo "fn main() {}" > src/main.rs && \
    echo "pub fn lib() {}" > src/lib.rs && \
    cargo build --release && \
    rm -rf src

# Copy actual source
COPY src/ src/
COPY internal/ internal/
COPY manifest/ manifest/
COPY resource/ resource/

# Build the release binary
RUN touch src/main.rs src/lib.rs && \
    cargo build --release --bin {{PROJECT_NAME}}

# Runtime stage
FROM debian:bookworm-slim

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

WORKDIR /app

# Copy binary from builder
COPY --from=builder /app/target/release/{{PROJECT_NAME}} /app/{{PROJECT_NAME}}

# Copy config
COPY --from=builder /app/manifest/ /app/manifest/

# Create non-root user
RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app
USER appuser

EXPOSE 8080

ENV RUST_LOG=info
ENV APP_ENV=production

CMD ["./{{PROJECT_NAME}}"]