objective categorical abstract machine language personal data server
65
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 50 lines 1.8 kB view raw
1FROM ocaml/opam:debian-12-ocaml-5.2 AS build 2 3ARG NODE_VERSION=v24.11.1 4ARG OPAM_VERSION=2.5 5ARG DUNE_VERSION=3.20.2 6 7ARG GIT_REV 8ENV GIT_REV=$GIT_REV 9 10USER root 11RUN apt-get update && apt-get install -y cmake git libev-dev libffi-dev libgmp-dev libssl-dev libsqlite3-dev libpcre3-dev pkg-config 12RUN ln -nsf /usr/bin/opam-${OPAM_VERSION} /usr/bin/opam 13USER opam 14 15WORKDIR /home/opam/pegasus 16 17RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash 18 19ENV NVM_DIR=/home/opam/.nvm 20ENV CI=true 21 22RUN bash -c "source $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm alias default $NODE_VERSION && nvm use default && corepack enable pnpm" 23 24ADD . . 25 26RUN bash -c "source $NVM_DIR/nvm.sh && pnpm install --frozen-lockfile" 27 28ENV DUNE_CACHE="enabled" 29RUN --mount=type=cache,target=/home/opam/.opam/download-cache,uid=1000,gid=1000 \ 30 --mount=type=cache,target=/home/opam/.cache/dune,uid=1000,gid=1000 \ 31 opam install dune.$DUNE_VERSION 32RUN --mount=type=cache,target=/home/opam/.cache/dune,uid=1000,gid=1000 \ 33 opam exec dune pkg lock 34RUN --mount=type=cache,target=/home/opam/.cache/dune,uid=1000,gid=1000 \ 35 bash -c "source $NVM_DIR/nvm.sh && opam exec dune build -- --release --stop-on-first-error" 36 37FROM debian:12 AS run 38 39RUN apt-get update && apt-get install -y ca-certificates cmake git libev-dev libffi-dev libgmp-dev libssl-dev libsqlite3-dev libpcre3-dev pkg-config netbase 40 41RUN mkdir /data 42 43COPY --from=build /home/opam/pegasus/_build/default/bin/main.exe /bin/pegasus 44COPY --from=build /home/opam/pegasus/_build/default/bin/gen_keys.exe /bin/gen-keys 45 46ENTRYPOINT ["/bin/pegasus"] 47 48LABEL org.opencontainers.image.source="https://github.com/futurgh/pegasus" 49LABEL org.opencontainers.image.description="pegasus, an atproto pds" 50LABEL org.opencontainers.image.licenses=MPL-2.0