Files
TheCriicom--omega-dashboard…/server/api/Dockerfile
T
Cristian Laporta d72c2a4c36 Server: API, proxy, pannello di moderazione e Docker Compose
API Node.js con account, social (amici, presenza, messaggi, party con
voce, bacheca, gruppi, tempo di gioco), Store di homebrew e libreria
personale. Proxy che registra le richieste oscurando i dati sensibili,
pannello admin web, HTTPS opzionale con Caddy e script di installazione.
2026-10-03 16:38:58 +02:00

28 lines
1.1 KiB
Docker

# Api di Omega. Oltre alle dipendenze npm servono ffmpeg (avatar e copertine)
# e JxrDecApp per le catture PS5 in JPEG XR: Alpine non lo pacchettizza, quindi
# si compila da jxrlib nel primo stadio.
FROM node:22-alpine AS jxr
RUN apk add --no-cache git build-base \
&& git clone -q --depth 1 https://github.com/4creators/jxrlib /j \
&& cd /j && make -j4 CFLAGS="-O2 -w -fPIC -D__ANSI__ -DDISABLE_PERF_MEASUREMENT -std=gnu89 -fpermissive -I. -Icommon/include -Iimage/sys -Ijxrgluelib -Ijxrtestlib" \
&& cp build/JxrDecApp /JxrDecApp
FROM node:22-alpine
# tar GNU per l'archivio del sorgente servito su /source
RUN apk add --no-cache ffmpeg tar
COPY --from=jxr /JxrDecApp /usr/local/bin/JxrDecApp
WORKDIR /app
COPY package.json package-lock.json* ./
RUN if [ -f package-lock.json ]; then npm ci --omit=dev; else npm install --omit=dev; fi \
&& npm cache clean --force
COPY config ./config
COPY migrations ./migrations
COPY src ./src
COPY store-assets ./store-assets
COPY admin-ui ./admin-ui
# foto e video caricati dagli utenti (volume media-data)
RUN mkdir -p /app/media && chown node:node /app/media
USER node
EXPOSE 8080
CMD ["node", "src/server.js"]