-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
73 lines (53 loc) · 2.33 KB
/
Dockerfile
File metadata and controls
73 lines (53 loc) · 2.33 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
61
62
63
64
65
66
67
68
69
70
71
72
73
ARG PATCH_VERSION=0.30
ARG LCZERO_VERSION=0.30
FROM alpine:3.23 AS lczero-build
ARG PATCH_VERSION
ARG LCZERO_VERSION
ARG LCZERO_REPOSITORY=https://github.com/LeelaChessZero/lc0.git
WORKDIR /tmp
ADD ["https://bootstrap.pypa.io/get-pip.py", "/tmp/get-pip.py"]
COPY ["./patches/${PATCH_VERSION}/meson.build.patch", "/tmp/meson.build.patch"]
RUN set -eux \
&& apk add git alpine-sdk bash ninja openblas-dev protoc protobuf-dev cmake gcompat gtest-dev python3 \
&& if [ "$(uname -m)" = "x86_64" ]; then \
apk add eigen-dev; \
fi \
&& git clone -b "release/${LCZERO_VERSION}" --jobs="$(nproc)" --depth=1 --recurse-submodules "${LCZERO_REPOSITORY}" lczero \
&& rm -rf /usr/lib/python*/EXTERNALLY-MANAGED \
&& python3 /tmp/get-pip.py \
&& pip install meson \
&& cd lczero \
&& patch --verbose "meson.build" <"/tmp/meson.build.patch" \
&& CXXFLAGS=-U_FORTIFY_SOURCE ./build.sh
FROM scratch AS rootfs
COPY ["./rootfs", "/"]
COPY --from=lczero-build ["/tmp/lczero/build/release/lc0", "/lczero/"]
COPY --from=hairyhenderson/gomplate:v3.11.5-alpine ["/bin/gomplate", "/usr/local/bin/"]
COPY --from=ghcr.io/n0rthernl1ghts/s6-rootfs:3.1.6.2 ["/", "/"]
FROM alpine:3.23
RUN set -eux \
&& apk add --update --no-cache bash libstdc++ ca-certificates curl netcat-openbsd openblas \
&& if [ "$(uname -m)" = "x86_64" ]; then \
apk add eigen; \
fi \
&& adduser --shell /bin/false --disabled-password --gecos "LCZero User" --home "/lczero" "lczero"
COPY --from=rootfs ["/", "/"]
LABEL maintainer="Aleksandar Puharic <aleksandar@puharic.com>" \
org.opencontainers.image.source="https://github.com/N0rthernL1ghts/lczero-docker" \
org.opencontainers.image.description="LcZero ${LCZERO_VERSION} (lc0) - Alpine Build" \
org.opencontainers.image.licenses="MIT" \
org.opencontainers.image.version="${LCZERO_VERSION}"
# s6-overlay configuration
ENV S6_KEEP_ENV=1
ENV S6_KILL_GRACETIME=6000
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=1
ENV S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0
# LCZero
ARG LCZERO_VERSION
ENV LCZERO_VERSION="${LCZERO_VERSION}"
ENV LCZERO_NETWORK_SHA="d7c810f15aad363d58e8efc8d54e7c743191177db27017a441d695acd472c3c5"
ENV LCZERO_NETWORKS_PATH="/lczero/networks"
ENV LCZERO_NETWORK_GET_URI="https://training.lczero.org/get_network?sha="
WORKDIR /lczero
EXPOSE 3333/TCP
ENTRYPOINT ["/init"]