atproto relay implementation in zig zlay.waow.tech
at main 25 lines 1.2 kB view raw
1# multi-stage build: compile natively inside x86_64 linux container 2# uses Debian (glibc) because zig 0.15's C++ codegen for musl 3# produces illegal instructions in RocksDB's LRU cache 4FROM --platform=linux/amd64 debian:bookworm-slim AS builder 5RUN apt-get update && apt-get install -y --no-install-recommends curl xz-utils ca-certificates && rm -rf /var/lib/apt/lists/* 6RUN curl -fSL https://ziglang.org/download/0.15.2/zig-x86_64-linux-0.15.2.tar.xz \ 7 | tar xJ -C /opt 8ENV PATH=/opt/zig-x86_64-linux-0.15.2:$PATH 9WORKDIR /build 10 11# fetch dependencies first (cacheable — only changes when build.zig.zon changes) 12COPY build.zig build.zig.zon ./ 13RUN zig build --fetch-only 2>/dev/null || true 14 15# then copy source and build 16COPY src/ src/ 17RUN zig build -Doptimize=ReleaseSafe -Dcpu=baseline -Dtarget=x86_64-linux-gnu 18 19FROM --platform=linux/amd64 debian:bookworm-slim 20RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates && rm -rf /var/lib/apt/lists/* 21COPY --from=builder /build/zig-out/bin/zlay /usr/local/bin/zlay 22RUN mkdir -p /data/events /data/collection-index 23ENV RELAY_DATA_DIR=/data/events 24EXPOSE 3000 3001 25ENTRYPOINT ["/usr/local/bin/zlay"]