prefect server in zig
at baefcd599c102d79ff2b66a4e5c596582bffc389 44 lines 1.2 kB view raw
1# Build stage 2FROM alpine:3.20 AS builder 3 4# install build dependencies + CA certs for TLS 5RUN apk add --no-cache curl xz ca-certificates 6 7# download zig 0.15.2 based on architecture 8RUN ARCH=$(uname -m) && \ 9 if [ "$ARCH" = "x86_64" ]; then ZIG_ARCH="x86_64"; \ 10 elif [ "$ARCH" = "aarch64" ]; then ZIG_ARCH="aarch64"; \ 11 else echo "Unsupported arch: $ARCH" && exit 1; fi && \ 12 curl -L "https://ziglang.org/download/0.15.2/zig-${ZIG_ARCH}-linux-0.15.2.tar.xz" | \ 13 tar -xJ -C /usr/local && \ 14 ln -s /usr/local/zig-${ZIG_ARCH}-linux-0.15.2/zig /usr/local/bin/zig 15 16WORKDIR /build 17COPY build.zig build.zig.zon ./ 18COPY src/ src/ 19 20RUN zig build -Doptimize=ReleaseFast 21 22# copy facil.io shared library from zig cache 23RUN mkdir -p /build/lib && \ 24 find / -name "libfacil.io.so" 2>/dev/null -exec cp {} /build/lib/ \; 25 26# Runtime stage 27FROM alpine:3.20 28 29RUN apk add --no-cache libstdc++ 30 31WORKDIR /app 32 33# copy binary and shared library 34COPY --from=builder /build/zig-out/bin/prefect-server /app/ 35COPY --from=builder /build/lib/ /app/lib/ 36 37# set library path 38ENV LD_LIBRARY_PATH=/app/lib 39ENV PREFECT_SERVER_PORT=4200 40ENV PREFECT_SERVER_LOGGING_LEVEL=INFO 41 42EXPOSE 4200 43 44CMD ["/app/prefect-server"]