52 lines
1.4 KiB
Docker
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"]
|