-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathDockerfile.debug
More file actions
60 lines (47 loc) · 2.11 KB
/
Copy pathDockerfile.debug
File metadata and controls
60 lines (47 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
FROM ubuntu:24.04 AS build
RUN apt-get update && apt-get install -y --no-install-recommends curl xz-utils ca-certificates git && rm -rf /var/lib/apt/lists/*
ARG ZIG_VERSION=0.16.0
ARG TARGETARCH
RUN case "$TARGETARCH" in \
amd64) echo "ZIG_ARCH=x86_64" > /tmp/zig-arch.env ;; \
arm64) echo "ZIG_ARCH=aarch64" > /tmp/zig-arch.env ;; \
*) echo "unsupported TARGETARCH=$TARGETARCH" >&2; exit 1 ;; \
esac
RUN --mount=type=cache,id=ochi-zig-tarballs,target=/tmp/zig-cache \
. /tmp/zig-arch.env && \
zig_dir="/usr/local/zig-${ZIG_ARCH}-linux-${ZIG_VERSION}" && \
zig_tar="/tmp/zig-cache/zig-${ZIG_ARCH}.tar.xz" && \
if [ ! -f "${zig_tar}" ]; then \
curl -fsSL -o "${zig_tar}" "https://ziglang.org/download/${ZIG_VERSION}/zig-${ZIG_ARCH}-linux-${ZIG_VERSION}.tar.xz"; \
fi && \
tar -xJf "${zig_tar}" -C /usr/local && \
ln -sf "${zig_dir}/zig" /usr/local/bin/zig
WORKDIR /app
COPY build.zig build.zig.zon ./
RUN --mount=type=cache,id=ochi-zig-global,target=/root/.cache/zig \
--mount=type=cache,id=ochi-zig-local,target=/app/.zig-cache \
/usr/local/bin/zig build --fetch
COPY src/ src/
ARG OPTIMIZE=ReleaseSafe
ARG RELEASE=false
ARG TRACY=false
ARG PPROF=false
RUN --mount=type=cache,id=ochi-zig-global,target=/root/.cache/zig \
--mount=type=cache,id=ochi-zig-local,target=/app/.zig-cache \
/usr/local/bin/zig build -Doptimize=${OPTIMIZE} -Dtracy=${TRACY} -Dpprof=${PPROF} -Drelease=${RELEASE}
# FROM gcr.io/distroless/cc-debian12:nonroot AS runtime
FROM ubuntu:24.04 AS runtime
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
llvm \
&& rm -rf /var/lib/apt/lists/* \
&& if [ ! -x /usr/bin/llvm-symbolizer ]; then \
sym="$(ls /usr/bin/llvm-symbolizer-* 2>/dev/null | head -n 1)"; \
test -n "${sym}" && ln -sf "${sym}" /usr/bin/llvm-symbolizer; \
fi
WORKDIR /app
ENV LLVM_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer
ENV TSAN_OPTIONS=external_symbolizer_path=/usr/bin/llvm-symbolizer,symbolize=1,halt_on_error=1,verbosity=1
COPY --from=build /app/zig-out/bin/ochi /usr/local/bin/ochi
EXPOSE 9014
CMD ["/usr/local/bin/ochi"]