Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
90 lines (69 loc) · 3.23 KB
/
Copy pathDockerfile
File metadata and controls
90 lines (69 loc) · 3.23 KB
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
FROM node:26.13.0-trixie-slim@sha256:e4db4c914bf8ad241bd24804fc25d272d89bad97e68cdc8a1414862790a02c39 AS node-base
FROM ghcr.io/voidzero-dev/vite-plus:1.5.0@sha256:cce163cdf4cf3fff928925e03a815910be14d34c355fe40b4e79e766fe368f63 AS vite-plus
FROM mwader/static-ffmpeg:9.0.2@sha256:7d9bdaaf887f7e6ce6151f67325c344074b5ff1fb75316011c3376503e449a7b AS ffmpeg
FROM cloudflare/cloudflared:2026.10.7@sha256:4955524aeaa379e154023d5a027c250f7b35041a2e7e950cf13f144bc9b9c5ba AS cloudflared
FROM vite-plus AS builder
WORKDIR /app
COPY --chown=vp:vp package.json pnpm-lock.yaml pnpm-workspace.yaml .nvmrc ./
COPY --chown=vp:vp backend/package.json ./backend/
COPY --chown=vp:vp frontend/package.json ./frontend/
COPY --chown=vp:vp docs/package.json ./docs/
RUN --mount=type=cache,target=/home/vp/.local/share/pnpm/store,uid=1000,gid=1000 \
vp install --frozen-lockfile --filter aurral-frontend
COPY --chown=vp:vp frontend/ ./frontend/
COPY --chown=vp:vp lib/ ./lib/
ARG APP_VERSION=unknown
ARG GITHUB_REPO=lklynet/aurral
ARG RELEASE_CHANNEL=stable
ENV VITE_APP_VERSION=$APP_VERSION
ENV VITE_GITHUB_REPO=$GITHUB_REPO
ENV VITE_RELEASE_CHANNEL=$RELEASE_CHANNEL
RUN pnpm --filter aurral-frontend run build
FROM vite-plus AS backend-deps
WORKDIR /app
COPY --chown=vp:vp package.json pnpm-lock.yaml pnpm-workspace.yaml .nvmrc ./
COPY --chown=vp:vp backend/package.json ./backend/
COPY --chown=vp:vp frontend/package.json ./frontend/
COPY --chown=vp:vp docs/package.json ./docs/
RUN --mount=type=cache,target=/home/vp/.local/share/pnpm/store,uid=1000,gid=1000 \
vp install --frozen-lockfile --prod --filter aurral --filter aurral-backend && \
cd backend && \
node -e "require('sharp')"
FROM node-base AS runtime
WORKDIR /app
RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \
fontconfig \
fonts-dejavu-core \
fonts-noto-color-emoji \
python3 \
ca-certificates \
libjemalloc2 \
&& rm -rf /var/lib/apt/lists/* \
&& groupadd --gid 1001 nodejs \
&& useradd --uid 1001 --gid nodejs --shell /usr/sbin/nologin --create-home nodejs \
&& mkdir -p /config \
&& chown -R nodejs:nodejs /config
ENV LD_PRELOAD=libjemalloc.so.2 \
MALLOC_CONF=background_thread:true,dirty_decay_ms:1000,muzzy_decay_ms:1000
COPY --from=ffmpeg /ffmpeg /ffprobe /usr/local/bin/
COPY --from=cloudflared /usr/local/bin/cloudflared /usr/local/bin/
ADD --chmod=755 --checksum=sha256:e51e69e89489f199530f13d32a4342da3ddb2cf34842f364603a066db05afbf3 \
https://github.com/yt-dlp/yt-dlp/releases/download/2026.10.26/yt-dlp \
/usr/local/bin/yt-dlp
RUN yt-dlp --version && ffmpeg -version && ffprobe -version && cloudflared --version
COPY package.json ./
COPY backend/package.json ./backend/
COPY frontend/package.json ./frontend/
COPY --from=backend-deps /app/node_modules ./node_modules
COPY --from=backend-deps /app/backend/node_modules ./backend/node_modules
COPY backend/ ./backend/
COPY lib/ ./lib/
COPY --from=builder /app/frontend/dist ./frontend/dist
COPY --chmod=755 backend/docker-entrypoint.sh /usr/local/bin/
ARG APP_VERSION=unknown
ENV APP_VERSION=$APP_VERSION
ARG GITHUB_REPO=lklynet/aurral
ENV GITHUB_REPO=$GITHUB_REPO
EXPOSE 3001
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["node", "--max-semi-space-size=4", "backend/server.ts"]