fix(ci): bouw met productie-.env, deploy met env+volumes en rollback
CI / check (push) Successful in 1m14s
CI / deploy (push) Failing after 3m10s

- Deploy kopieert de productie-.env van de host in de build-context:
  Next.js bakt NEXT_PUBLIC_* in en valideert DATABASE_URL/HOTEL_NAME
  (SKIP_ENV_VALIDATION is verboden voor productie, zie src/env.ts).
- Dockerfile builder installeert git (next.config.ts deploymentId).
- Deploy-container krijgt --env-file + dezelfde volumes als compose,
  stopt ook de oude compose-container (poort 3002) en rolt terug via
  compose bij een falende health check.
This commit is contained in:
openhands committed 2026-09-04 12:22:02 +02:00
1 parent 43ecdaee19
commit 10da44ee56
3 files changed
+49

No files matched your search

+25
View File
@@ -63,6 +63,16 @@ jobs:
repository: ${{ gitea.repository }}
token: ${{ gitea.token }}
- name: Provide production env for build
run: |
# De Next.js-build bakt NEXT_PUBLIC_* in de client-bundle en
# valideert DATABASE_URL/HOTEL_NAME (zie src/env.ts — validatie
# overslaan is verboden voor productie). .env staat niet in git,
# dus kopieer de productie-.env van de host in de build-context.
# Hij belandt alleen in de wegwerp-builder-stage, niet in de
# runtime-image (die krijgt env via --env-file bij docker run).
cp /var/www/atom-nexst/.env .env
- name: Build image
run: |
# --network=host is vereist: deze host heeft Docker iptables
@@ -76,13 +86,24 @@ jobs:
- name: Deploy container
run: |
# Maak poort 3002 vrij: stop zowel de vorige CI-container als de
# compose-container (beide draaien op het host-netwerk).
docker stop epicnext-cms-app 2>/dev/null || true
docker rm epicnext-cms-app 2>/dev/null || true
docker stop epicnext-cms 2>/dev/null || true
docker rm epicnext-cms 2>/dev/null || true
# Zelfde env + volumes als docker-compose.yml, zodat de CI-container
# functioneel gelijk is aan de compose-container die hij vervangt.
docker run -d \
--name epicnext-cms-app \
--restart always \
--net=host \
--env-file /var/www/atom-nexst/.env \
-v /var/www/atom-nexst/public/nitro-assets:/app/public/nitro-assets \
-v /var/www/atom-nexst/public/swf:/app/public/swf \
-v /var/www/atom-nexst/storage:/app/storage \
-v /var/www/Gamedata:/var/www/Gamedata \
epicnext-cms:latest
docker image prune -f
@@ -101,4 +122,8 @@ jobs:
echo "ERROR: Health check failed" >&2
docker logs epicnext-cms-app --tail 50 >&2 || true
echo "Rolling back to compose container..." >&2
docker stop epicnext-cms-app 2>/dev/null || true
docker rm epicnext-cms-app 2>/dev/null || true
docker compose -f /var/www/atom-nexst/docker-compose.yml up -d --no-build 2>&1 || true
exit 1