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