forked from
tranquil.farm/tranquil-pds
Our Personal Data Server from scratch!
2.4 kB
56 lines
1FROM node:24-alpine AS frontend
2RUN corepack enable && corepack prepare pnpm@latest --activate
3WORKDIR /app
4COPY frontend/package.json frontend/pnpm-lock.yaml frontend/pnpm-workspace.yaml ./
5RUN pnpm install --frozen-lockfile
6COPY frontend/ ./
7RUN pnpm build
8
9FROM rust:1.96-alpine AS builder
10RUN apk add --no-cache ca-certificates musl-dev pkgconfig openssl-dev openssl-libs-static mold clang protoc
11ENV RUSTFLAGS="-C linker=clang -C link-arg=-fuse-ld=mold"
12WORKDIR /app
13ARG SLIM="false"
14COPY Cargo.toml Cargo.lock ./
15COPY .sqlx ./.sqlx
16COPY crates/tranquil-types ./crates/tranquil-types
17COPY crates/tranquil-crypto ./crates/tranquil-crypto
18COPY crates/tranquil-scopes ./crates/tranquil-scopes
19COPY crates/tranquil-config ./crates/tranquil-config
20COPY crates/tranquil-repo ./crates/tranquil-repo
21COPY crates/tranquil-lexicon ./crates/tranquil-lexicon
22COPY crates/tranquil-oauth ./crates/tranquil-oauth
23COPY crates/tranquil-db-traits ./crates/tranquil-db-traits
24COPY crates/tranquil-infra ./crates/tranquil-infra
25COPY crates/tranquil-auth ./crates/tranquil-auth
26COPY crates/tranquil-comms ./crates/tranquil-comms
27COPY crates/tranquil-db ./crates/tranquil-db
28COPY crates/tranquil-ripple ./crates/tranquil-ripple
29COPY crates/tranquil-storage ./crates/tranquil-storage
30COPY crates/tranquil-cache ./crates/tranquil-cache
31COPY crates/tranquil-pds ./crates/tranquil-pds
32COPY crates/tranquil-sync ./crates/tranquil-sync
33COPY crates/tranquil-api ./crates/tranquil-api
34COPY crates/tranquil-oauth-server ./crates/tranquil-oauth-server
35COPY crates/tranquil-store ./crates/tranquil-store
36COPY crates/tranquil-signal ./crates/tranquil-signal
37COPY crates/tranquil-server ./crates/tranquil-server
38COPY migrations ./migrations
39RUN --mount=type=cache,target=/usr/local/cargo/registry \
40 --mount=type=cache,target=/app/target \
41 if [ "$SLIM" = "true" ]; then \
42 SQLX_OFFLINE=true cargo build --release -p tranquil-server --no-default-features; \
43 else \
44 SQLX_OFFLINE=true cargo build --release -p tranquil-server; \
45 fi && \
46 cp target/release/tranquil-server /tmp/tranquil-pds
47
48FROM alpine:3.23
49RUN apk add --no-cache ca-certificates
50COPY --from=builder /tmp/tranquil-pds /usr/local/bin/tranquil-pds
51COPY --from=frontend /app/dist /var/lib/tranquil-pds/frontend
52WORKDIR /app
53ENV SERVER_HOST=[::]
54ENV SERVER_PORT=3000
55EXPOSE 3000
56CMD ["tranquil-pds"]