Ctrl K
ComunidadGuías…

Dockerfile

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# syntax=docker/dockerfile:1

FROM node:22-bookworm-slim AS frontend
WORKDIR /src/frontend
COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci
COPY frontend/ ./
RUN npm run build

FROM rust:1.88-bookworm AS rust-build
WORKDIR /src
COPY Cargo.toml Cargo.lock ./
COPY crates/ crates/
COPY apps/ apps/
RUN cargo build --locked --release --package posterview-server

FROM debian:bookworm-slim AS runtime
RUN apt-get update \
    && apt-get install -y --no-install-recommends ca-certificates curl util-linux passwd \
    && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=rust-build /src/target/release/posterview-server /app/posterview-server
COPY --from=frontend /src/frontend/dist/ /app/frontend/
COPY docker-entrypoint.sh /entrypoint.sh
RUN sed -i 's/\r$//' /entrypoint.sh \
    && useradd --uid 10001 --no-create-home --shell /usr/sbin/nologin posterview \
    && mkdir -p /config \
    && chown -R posterview:posterview /config /app \
    && chmod +x /entrypoint.sh

ENV POSTERVIEW_BIND=0.0.0.0:7979 \
    POSTERVIEW_UI_DIR=/app/frontend \
    RUST_LOG=posterview_server=info,tower_http=info
VOLUME ["/config"]
EXPOSE 7979
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
    CMD curl -fsS http://localhost:7979/api/health || exit 1
ENTRYPOINT ["/entrypoint.sh"]
CMD ["/app/posterview-server"]