mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
Signed-off-by: Will Pfleger <pfleger.will@gmail.com> Signed-off-by: Will Pfleger <wpfleger@block.xyz> Signed-off-by: Will Pfleger <wpfleger@squareup.com> Signed-off-by: Will Pfleger <wpfleger96@gmail.com> Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co> Co-authored-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co> Co-authored-by: npub16v54tttfqacx9ycvc3k0ut0npj564ahcuajzy6qjvh57ntmsf4uq4806j2 <d32955ad69077062930cc46cfe2df30ca9aaf6f8e76422681265e9e9af704d78@sprout-oss.stage.blox.sqprod.co> Co-authored-by: Will Pfleger <wpfleger96@gmail.com>
47 lines
1.9 KiB
Docker
47 lines
1.9 KiB
Docker
# ── Build stage (Rust) ──────────────────────────────────────
|
|
# Hard-code --platform to prevent exec format error on ARM Macs.
|
|
FROM --platform=linux/amd64 rust:1.95-bookworm AS builder
|
|
WORKDIR /build
|
|
COPY . .
|
|
RUN cargo build --release -p buzz-relay \
|
|
&& strip target/release/buzz-relay
|
|
|
|
# ── Web build stage (Node/pnpm) ────────────────────────────
|
|
FROM --platform=linux/amd64 node:24-bookworm-slim AS web-builder
|
|
WORKDIR /build
|
|
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
|
COPY web/ web/
|
|
RUN corepack enable && pnpm install --frozen-lockfile --filter buzz-web
|
|
RUN pnpm -C web build
|
|
|
|
# ── Runtime stage ───────────────────────────────────────────
|
|
FROM --platform=linux/amd64 debian:bookworm-slim
|
|
|
|
# CAKE: non-root UID 1000 (numeric, not username)
|
|
RUN groupadd -g 1000 buzz && useradd -u 1000 -g buzz -m buzz
|
|
|
|
# CAKE: writable dirs
|
|
RUN mkdir -p /cache /tmp && chown buzz:buzz /cache /tmp
|
|
|
|
# git: relay shells out to `git` for hydrate/receive-pack/upload-pack (S3-backed repos)
|
|
# socat: Istio abstract→file socket bridge
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates git socat && rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=builder /build/target/release/buzz-relay /code/buzz-relay
|
|
COPY --from=web-builder /build/web/dist /code/web
|
|
COPY script/start /code/start
|
|
RUN chmod +x /code/start
|
|
|
|
ENV BUZZ_WEB_DIR="/code/web"
|
|
|
|
# CAKE: required Envoy env vars (overridden at runtime by CAKE).
|
|
ENV ENVOY_ADMIN_SOCKET_PATH="@envoy-admin.sock" \
|
|
ENVOY_INGRESS_PORT="20001" \
|
|
ENVOY_HTTP_EGRESS_SOCKET_PATH="@egress.sock" \
|
|
ENVOY_DATADOG_PORT="3030" \
|
|
CASH_FRAMEWORK="rust"
|
|
|
|
USER 1000
|
|
ENTRYPOINT ["/code/start"]
|