logseq-sync/Dockerfile

52 lines
1.4 KiB
Docker

# Use Alpine as the base image
FROM node:22-alpine3.21 AS builder
# Set metadata (optional but good practice)
LABEL maintainer="you@example.com"
WORKDIR /build
# get all the deps
RUN apk add --no-cache \
bash \
ca-certificates \
openjdk21-jre-headless \
git \
curl
RUN curl -LO https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh \
&& chmod +x linux-install.sh \
&& ./linux-install.sh
RUN git clone https://github.com/logseq/logseq.git --depth 1 \
&& cd logseq \
&& yarn install
WORKDIR /build/logseq
RUN git config --global --add safe.directory '*' \
&& git config --global user.email "builder@local" \
&& git config --global user.name "Docker Builder" \
&& git remote add 4shutosh https://github.com/4shutosh/logseq.git \
&& git fetch 4shutosh self_host/21_march_2026 \
&& git cherry-pick 477061ffb
WORKDIR /build/logseq/deps/db-sync
#build db-sync
RUN yarn install \
&& yarn build:node-adapter \
&& yarn install --production
#copy to /logseq-sync for final image
RUN mkdir -p /logseq-sync/worker \
&& mv worker/dist /logseq-sync/worker \
&& mv node_modules package.json yarn.lock start.sh /logseq-sync
#final image
FROM node:22-alpine3.21
COPY --from=builder /logseq-sync /logseq-sync
COPY start.sh /logseq-sync
RUN apk add --no-cache \
bash \
curl
WORKDIR /logseq-sync
EXPOSE 8787
HEALTHCHECK CMD curl --fail http://localhost:8787/health || exit 1
# Default command
CMD ["bash", "start.sh"]