Our Personal Data Server from scratch! tranquil.farm
oauth atproto pds rust postgresql objectstorage fun
at feat/nix-module 26 lines 934 B view raw
1FROM rust:1.92-alpine AS builder 2RUN apk add --no-cache ca-certificates musl-dev pkgconfig openssl-dev openssl-libs-static 3WORKDIR /app 4ARG SLIM="false" 5COPY Cargo.toml Cargo.lock ./ 6COPY crates ./crates 7COPY .sqlx ./.sqlx 8COPY migrations ./crates/tranquil-pds/migrations 9RUN --mount=type=cache,target=/usr/local/cargo/registry \ 10 --mount=type=cache,target=/app/target \ 11 if [ "$SLIM" = "true" ]; then \ 12 SQLX_OFFLINE=true cargo build --release -p tranquil-pds --no-default-features; \ 13 else \ 14 SQLX_OFFLINE=true cargo build --release -p tranquil-pds; \ 15 fi && \ 16 cp target/release/tranquil-pds /tmp/tranquil-pds 17 18FROM alpine:3.23 19RUN apk add --no-cache msmtp ca-certificates && ln -sf /usr/bin/msmtp /usr/sbin/sendmail 20COPY --from=builder /tmp/tranquil-pds /usr/local/bin/tranquil-pds 21COPY migrations /app/migrations 22WORKDIR /app 23ENV SERVER_HOST=0.0.0.0 24ENV SERVER_PORT=3000 25EXPOSE 3000 26CMD ["tranquil-pds"]