File size: 1,625 Bytes
c081016
04069d4
ada4bc3
 
edb1977
5f0db80
 
 
85e5d0a
5f0db80
 
 
 
 
 
 
 
 
 
 
c081016
5f0db80
edb1977
706d707
0746643
 
c081016
0746643
edb1977
706d707
5f0db80
 
e520847
cafefc4
54120fd
ada4bc3
 
 
 
70d57ef
 
5f0db80
1ccad96
939bdfb
8f2a338
939bdfb
ad8a6a3
1ccad96
d462cda
 
1ccad96
d462cda
ad8a6a3
 
ece7007
939bdfb
 
 
9174be1
 
 
e520847
ada4bc3
04069d4
 
804ce4a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
FROM node:20-slim AS builder

USER root

RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*

WORKDIR /app

RUN git clone https://github.com/CorentinTh/enclosed

WORKDIR /app/enclosed

RUN npm install -g pnpm --ignore-scripts && \
    pnpm install --frozen-lockfile --ignore-scripts

RUN pnpm --filter @enclosed/crypto run build && \
    pnpm --filter @enclosed/lib run build && \
    pnpm --filter @enclosed/app-client run build && \
    pnpm --filter @enclosed/app-server run build:node

FROM node:20-slim

RUN apt-get update && apt-get install -y \
    git \
    git-lfs \
    bash \
    curl \
    wget \
    procps && rm -rf /var/lib/apt/lists/*

WORKDIR /app

RUN chown -R 1000 /app
COPY --chown=1000 sync-notes.js ./
COPY --chown=1000 ecosystem.config.js ./

RUN npm install -g pm2 && \
    npm install node-cron

COPY --from=builder /app/enclosed/packages/app-client/dist ./public
COPY --from=builder /app/enclosed/packages/app-server/dist-node/index.cjs ./index.cjs

RUN --mount=type=secret,id=DATA_REPO,mode=0444,required=true \
    git clone $(cat /run/secrets/DATA_REPO)

WORKDIR /app/notes

RUN --mount=type=secret,id=GIT_USERNAME,mode=0444,required=true \
    git config user.name $(cat /run/secrets/GIT_USERNAME)
    
RUN --mount=type=secret,id=GIT_EMAIL,mode=0444,required=true \
    git config user.email $(cat /run/secrets/GIT_EMAIL)

WORKDIR /app

RUN chown -R 1000 /app/notes
RUN chmod -R 777 /app/notes

ENV STORAGE_DRIVER_FS_LITE_PATH="/app/notes/data" \
    SERVER_API_ROUTES_TIMEOUT_MS=60000
    
USER 1000

EXPOSE 8787

CMD ["/bin/sh", "-c", "pm2-runtime ecosystem.config.js"]