# syntax=docker/dockerfile:1.7 FROM --platform=$BUILDPLATFORM debian:bookworm-slim AS build RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates curl git xz-utils libc6-dev \ && rm -rf /var/lib/apt/lists/* ARG ZIG_VERSION=0.17.0 ARG ZDS_VERSION ARG ZDS_WEB_DRAWINGS ARG BUILDARCH ARG TARGETARCH RUN set -eux; \ case "${BUILDARCH}" in \ amd64) zig_target="x86_64-linux"; zig_sha256="1cbe9df9f27e6b78d14ccbca43b6703a404ef79ef1c463de901d7f088d4e2026" ;; \ arm64) zig_target="aarch64-linux"; zig_sha256="9e8d11661d4ae3bd57702a3832781e23ad151dde5798e16a5ccd503f65234ff8" ;; \ *) echo "unsupported build arch: ${BUILDARCH}" >&2; exit 1 ;; \ esac; \ curl -fsSL "https://ziglang.org/download/${ZIG_VERSION}/zig-${zig_target}-${ZIG_VERSION}.tar.xz" -o /tmp/zig.tar.xz \ && printf '%s %s\n' "${zig_sha256}" /tmp/zig.tar.xz | sha256sum -c - \ && mkdir -p /opt/zig \ && tar -xJf /tmp/zig.tar.xz -C /opt/zig --strip-components=1 \ && rm /tmp/zig.tar.xz ENV PATH="/opt/zig:${PATH}" ENV ZIG_GLOBAL_CACHE_DIR=/root/.cache/zig WORKDIR /work/zat.dev/zds COPY . . RUN --mount=type=cache,target=/root/.cache/zig \ --mount=type=cache,target=/work/zat.dev/zds/.zig-cache \ set -eux; \ case "${TARGETARCH}" in \ amd64) zig_target="x86_64-linux-gnu" ;; \ arm64) zig_target="aarch64-linux-gnu" ;; \ *) echo "unsupported target arch: ${TARGETARCH}" >&2; exit 1 ;; \ esac; \ ZIG=zig tools/ci-fetch.sh; \ zig build -Dtarget="${zig_target}" -Doptimize=ReleaseSafe ${ZDS_VERSION:+-Dversion="${ZDS_VERSION}"} ${ZDS_WEB_DRAWINGS:+-Dweb-drawings="${ZDS_WEB_DRAWINGS}"} FROM --platform=$TARGETPLATFORM debian:bookworm-slim RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates sqlite3 \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=build /work/zat.dev/zds/zig-out/bin/ /usr/local/bin/ RUN mkdir -p /data ENV ZDS_HOST=0.0.0.0 ENV ZDS_PORT=2583 ENV ZDS_DB=/data/zds.sqlite3 EXPOSE 2583 CMD ["zds"]