Prüfung / pruefung (push) Canceled after 0s
deploy/update.sh und deploy/backup.sh konnten nur Docker. Beide erkennen die Installationsart jetzt selbst und beherrschen auch die Installation als Dienst: npm ci, prisma migrate deploy, bauen, systemctl restart - und pg_dump ueber DATABASE_URL fuer die Sicherung. Beim Durchspielen gegen einen laufenden Stapel zwei Fehler gefunden: 1. Die Zustandspruefung des Web-Containers konnte nie gelingen. Next bindet im Standalone-Modus an die Adresse aus HOSTNAME, und Docker setzt dort den Containernamen - der Server lauschte nur auf der Container-IP. Der Dienst web blieb dauerhaft auf "health: starting". Behoben mit ENV HOSTNAME=0.0.0.0; geprueft wird jetzt ueber 127.0.0.1. 2. Eine fehlgeschlagene Sicherung hielt die Aktualisierung nicht auf. Jetzt bricht sie ab, bevor etwas veraendert wird, und nennt die Auswege. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
54 lines
2.0 KiB
Docker
54 lines
2.0 KiB
Docker
# ProxLedger – Abbild für Dashboard und Worker.
|
||
# Beide Dienste teilen sich dieses Abbild und unterscheiden sich nur im Startbefehl.
|
||
|
||
FROM node:24-alpine AS basis
|
||
WORKDIR /app
|
||
# openssl wird von Prisma benötigt, tini beendet Prozesse sauber.
|
||
RUN apk add --no-cache openssl tini
|
||
|
||
# ---------------------------------------------------------------- Abhängigkeiten
|
||
FROM basis AS abhaengigkeiten
|
||
COPY package.json package-lock.json ./
|
||
COPY prisma ./prisma
|
||
COPY prisma7.config.ts ./
|
||
RUN npm ci --ignore-scripts
|
||
|
||
# ---------------------------------------------------------------- Bauen
|
||
FROM abhaengigkeiten AS bauen
|
||
COPY . .
|
||
RUN npx prisma generate \
|
||
&& npm run build \
|
||
&& npm run build:worker
|
||
|
||
# ---------------------------------------------------------------- Laufzeit
|
||
FROM basis AS laufzeit
|
||
ENV NODE_ENV=production
|
||
ENV PORT=3000
|
||
# Ohne diese Zeile nimmt Next den von Docker gesetzten HOSTNAME als Bindeadresse und lauscht
|
||
# nur auf der Container-IP. Die Zustandsprüfung über 127.0.0.1 schlägt dann immer fehl.
|
||
ENV HOSTNAME=0.0.0.0
|
||
|
||
RUN addgroup -g 1001 -S proxledger && adduser -S proxledger -u 1001 -G proxledger
|
||
|
||
# Next.js im Standalone-Modus bringt seine eigenen Abhängigkeiten mit.
|
||
COPY --from=bauen --chown=proxledger:proxledger /app/.next/standalone ./
|
||
COPY --from=bauen --chown=proxledger:proxledger /app/.next/static ./.next/static
|
||
COPY --from=bauen --chown=proxledger:proxledger /app/public ./public
|
||
|
||
# Agent-Skripte werden zur Laufzeit ausgeliefert.
|
||
COPY --from=bauen --chown=proxledger:proxledger /app/agent ./agent
|
||
|
||
# Worker als gebündelte Datei. Migrationen übernimmt der eigene Dienst „migrate“
|
||
# (Stufe „bauen“), damit dieses Abbild schlank bleibt und keine CLI mitschleppt.
|
||
COPY --from=bauen --chown=proxledger:proxledger /app/dist ./dist
|
||
COPY --chown=proxledger:proxledger deploy/start.sh ./start.sh
|
||
|
||
RUN mkdir -p /data/uploads && chown -R proxledger:proxledger /data
|
||
VOLUME ["/data"]
|
||
ENV UPLOAD_DIR=/data/uploads
|
||
|
||
USER proxledger
|
||
EXPOSE 3000
|
||
ENTRYPOINT ["/sbin/tini", "--"]
|
||
CMD ["./start.sh", "web"]
|