1# syntax = docker/dockerfile:1.2
2
3FROM rust:1.76-bookworm as builder
4WORKDIR app
5COPY . .
6
7# Compile collab server
8ARG CARGO_PROFILE_RELEASE_PANIC=abort
9ARG GITHUB_SHA
10
11ENV GITHUB_SHA=$GITHUB_SHA
12RUN --mount=type=cache,target=./script/node_modules \
13 --mount=type=cache,target=/usr/local/cargo/registry \
14 --mount=type=cache,target=/usr/local/cargo/git \
15 --mount=type=cache,target=./target \
16 cargo build --release --package collab --bin collab
17
18# Copy collab server binary out of cached directory
19RUN --mount=type=cache,target=./target \
20 cp /app/target/release/collab /app/collab
21
22# Copy collab server binary to the runtime image
23FROM debian:bookworm-slim as runtime
24RUN apt-get update; \
25 apt-get install -y --no-install-recommends \
26 libcurl4-openssl-dev \
27 ca-certificates \
28 linux-perf
29WORKDIR app
30COPY --from=builder /app/collab /app/collab
31COPY --from=builder /app/crates/collab/migrations /app/migrations
32ENV MIGRATIONS_PATH=/app/migrations
33ENTRYPOINT ["/app/collab"]