A privacy-first, self-hosted, fully open source personal knowledge management software, written in typescript and golang. (PERSONAL FORK)
at lambda-fork/main 60 lines 1.3 kB view raw
1FROM --platform=$BUILDPLATFORM node:21 AS node-build 2 3ARG NPM_REGISTRY= 4 5WORKDIR /app 6ADD app/package.json app/pnpm* app/.npmrc . 7 8RUN <<EORUN 9#!/bin/bash -e 10corepack enable 11corepack install --global $(node -e 'console.log(require("./package.json").packageManager)') 12npm config set registry ${NPM_REGISTRY} 13pnpm install --silent 14EORUN 15 16ADD app/ . 17RUN <<EORUN 18#!/bin/bash -e 19pnpm run build 20mkdir /artifacts 21mv appearance stage guide changelogs /artifacts/ 22EORUN 23 24FROM golang:1.24-alpine AS go-build 25 26ARG GOPROXY= 27 28RUN <<EORUN 29#!/bin/sh -e 30apk add --no-cache gcc musl-dev 31go env -w GO111MODULE=on 32go env -w GOPROXY=${GOPROXY} 33go env -w CGO_ENABLED=1 34EORUN 35 36WORKDIR /kernel 37ADD kernel/go.* . 38RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg \ 39 go mod download 40 41ADD kernel/ . 42RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg \ 43 go build --tags fts5 -v -ldflags "-s -w" 44 45FROM alpine:latest 46LABEL maintainer="Liang Ding<845765@qq.com>" 47 48RUN apk add --no-cache ca-certificates tzdata su-exec 49 50ENV TZ=Asia/Shanghai 51ENV HOME=/home/siyuan 52ENV RUN_IN_CONTAINER=true 53EXPOSE 6806 54 55WORKDIR /opt/siyuan/ 56COPY --from=go-build --chmod=755 /kernel/kernel /kernel/entrypoint.sh . 57COPY --from=node-build /artifacts . 58 59ENTRYPOINT ["/opt/siyuan/entrypoint.sh"] 60CMD ["/opt/siyuan/kernel"]