FROM oven/bun:1.3.12 AS frontend-builder
WORKDIR /usr/src/app/web
COPY web/package.json web/bun.lock ./
RUN bun install --frozen-lockfile
COPY web ./
RUN bun run build
FROM rust:1.88.0-slim AS builder
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
cmake \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /usr/src/app
COPY Cargo.toml Cargo.lock build.rs ./
COPY src ./src
COPY locales ./locales
COPY --from=frontend-builder /usr/src/app/web/dist ./web/dist
RUN cargo build --release
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
RUN mkdir -p /app/web_data /app/logs
COPY --from=builder /usr/src/app/target/release/embystream /app/embystream
EXPOSE 17172
CMD ["/app/embystream", "web", "serve", "--listen", "0.0.0.0:17172", "--data-dir", "/app/web_data", "--runtime-log-dir", "/app/logs"]