Skip to content

Commit d16456a

Browse files
committed
Add Dockerfile-arm64 to build on Mac M1/M2 series
1 parent 0b40ade commit d16456a

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

Dockerfile-arm64

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
FROM lukemathwalker/cargo-chef:latest-rust-1.75-bookworm AS chef
2+
WORKDIR /usr/src
3+
4+
ENV SCCACHE=0.5.4
5+
ENV RUSTC_WRAPPER=/usr/local/bin/sccache
6+
7+
# Donwload and configure sccache
8+
RUN curl -fsSL https://github.com/mozilla/sccache/releases/download/v$SCCACHE/sccache-v$SCCACHE-x86_64-unknown-linux-musl.tar.gz | tar -xzv --strip-components=1 -C /usr/local/bin sccache-v$SCCACHE-x86_64-unknown-linux-musl/sccache && \
9+
chmod +x /usr/local/bin/sccache
10+
11+
FROM chef AS planner
12+
13+
COPY backends backends
14+
COPY core core
15+
COPY router router
16+
COPY Cargo.toml ./
17+
COPY Cargo.lock ./
18+
19+
RUN cargo chef prepare --recipe-path recipe.json
20+
21+
FROM chef AS builder
22+
23+
ARG GIT_SHA
24+
ARG DOCKER_LABEL
25+
26+
# sccache specific variables
27+
ARG ACTIONS_CACHE_URL
28+
ARG ACTIONS_RUNTIME_TOKEN
29+
ARG SCCACHE_GHA_ENABLED
30+
31+
COPY --from=planner /usr/src/recipe.json recipe.json
32+
33+
RUN cargo chef cook --release --features candle --no-default-features --recipe-path recipe.json && sccache -s
34+
35+
COPY backends backends
36+
COPY core core
37+
COPY router router
38+
COPY Cargo.toml ./
39+
COPY Cargo.lock ./
40+
41+
FROM builder as http-builder
42+
43+
RUN cargo build --release --bin text-embeddings-router -F candle -F http --no-default-features && sccache -s
44+
45+
FROM builder as grpc-builder
46+
47+
RUN PROTOC_ZIP=protoc-21.12-linux-x86_64.zip && \
48+
curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v21.12/$PROTOC_ZIP && \
49+
unzip -o $PROTOC_ZIP -d /usr/local bin/protoc && \
50+
unzip -o $PROTOC_ZIP -d /usr/local 'include/*' && \
51+
rm -f $PROTOC_ZIP
52+
53+
COPY proto proto
54+
55+
RUN cargo build --release --bin text-embeddings-router -F grpc -F candle --no-default-features && sccache -s
56+
57+
FROM debian:bookworm-slim as base
58+
59+
ENV HUGGINGFACE_HUB_CACHE=/data \
60+
PORT=80 \
61+
MKL_ENABLE_INSTRUCTIONS=AVX512_E4 \
62+
RAYON_NUM_THREADS=8 \
63+
LD_PRELOAD=/usr/local/libfakeintel.so \
64+
LD_LIBRARY_PATH=/usr/local/lib
65+
66+
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
67+
libomp-dev \
68+
ca-certificates \
69+
libssl-dev \
70+
curl \
71+
&& rm -rf /var/lib/apt/lists/*
72+
73+
FROM base as grpc
74+
75+
COPY --from=grpc-builder /usr/src/target/release/text-embeddings-router /usr/local/bin/text-embeddings-router
76+
77+
ENTRYPOINT ["text-embeddings-router"]
78+
CMD ["--json-output"]
79+
80+
FROM base
81+
82+
COPY --from=http-builder /usr/src/target/release/text-embeddings-router /usr/local/bin/text-embeddings-router
83+
84+
ENTRYPOINT ["text-embeddings-router"]
85+
CMD ["--json-output"]

0 commit comments

Comments
 (0)