diff --git a/apps/platforms/node_modules b/apps/platforms/node_modules new file mode 120000 index 0000000..9b5e35b --- /dev/null +++ b/apps/platforms/node_modules @@ -0,0 +1 @@ +/opt/docker/insanitylab-apps/apps/platforms/node_modules \ No newline at end of file diff --git a/apps/platforms/scripts/migra-utenti.mjs b/apps/platforms/scripts/migra-utenti.mjs index 7f774ee..54a2bde 100755 --- a/apps/platforms/scripts/migra-utenti.mjs +++ b/apps/platforms/scripts/migra-utenti.mjs @@ -60,11 +60,19 @@ if (candidati.length === 0) { const ins = dst.prepare('INSERT INTO users (username, password_hash, role) VALUES (?, ?, ?)'); const del = togli ? src.prepare('DELETE FROM users WHERE username = ?') : null; -let copiati = 0, saltati = 0; +let copiati = 0, saltati = 0, tolti = 0; for (const u of candidati) { if (gia.has(u.username)) { - console.log(` = ${u.username.padEnd(16)} ${u.role.padEnd(12)} già presente a destinazione, lasciato com'è`); + // Già a destinazione: non lo si tocca di là (una migrazione che sovrascrive non si può + // rilanciare). Ma `--togli-dal-sito` riguarda l'ORIGINE, e va fatto lo stesso: chi è + // arrivato in un giro precedente non ha meno diritto di uscire dal sito di chi arriva + // adesso. Fino al 04/09/2026 questo `continue` saltava anche la cancellazione, e + // l'opzione diventava un no-op silenzioso appena la copia era già avvenuta — che è il + // caso normale, visto che copiare e ripulire sono due passi separati apposta. + const esce = togli && applica; + console.log(` = ${u.username.padEnd(16)} ${u.role.padEnd(12)} già a destinazione, lasciato com'è${esce ? ' — tolto dal sito' : ''}`); + if (esce) { del.run(u.username); tolti++; } saltati++; continue; } @@ -76,5 +84,5 @@ for (const u of candidati) { } } -console.log(`\n${applica ? `copiati ${copiati}` : `da copiare ${candidati.length - saltati}`}, saltati ${saltati}.`); +console.log(`\n${applica ? `copiati ${copiati}` : `da copiare ${candidati.length - saltati}`}, saltati ${saltati}${togli && applica ? `, tolti dal sito ${tolti + copiati}` : ''}.`); if (!applica) console.log('Niente è stato scritto.'); diff --git a/apps/sito/Dockerfile b/apps/sito/Dockerfile index b77908e..a5963b9 100644 --- a/apps/sito/Dockerfile +++ b/apps/sito/Dockerfile @@ -14,8 +14,6 @@ COPY package.json package-lock.json ./ RUN npm ci --omit=dev && npm cache clean --force COPY --from=build /app/dist ./dist COPY scripts ./scripts -# Contenuti della sezione Campus (generati con `npm run sync-campus` e committati) -COPY campus-content ./campus-content ENV HOST=0.0.0.0 \ PORT=4321 \ diff --git a/apps/sito/README.md b/apps/sito/README.md index 92e8af1..3d1b2e8 100644 --- a/apps/sito/README.md +++ b/apps/sito/README.md @@ -206,3 +206,26 @@ Gli articoli del blog non viaggiano con il codice: per caricarli in produzione, ## Licenza Proprietà di InsanityLab. + +## Deploy (dopo la separazione del 03/09/2026) + +Il progetto compose si chiama **`insanitylab`** (`name:` esplicito nel compose), non piu' +`src` come quando la cartella era `/opt/docker/insanitylab/src`. + +``` +cd /opt/docker/insanitylab/src/apps/sito +docker compose build # il sito resta in piedi: non tocca il container +docker compose up -d # sostituisce il container +``` + +⚠️ **`.env` non e' in git** (e non deve esserlo): resta dov'e' ed e' l'unico file che un +`git merge` non porta con se'. Il 04/09/2026 lo spostamento sotto `apps/sito/` ha lasciato +`.env` alla vecchia radice, l'`up` e' fallito **dopo** che il `down` aveva gia' tolto il +container, e il sito e' rimasto giu' **9,7 secondi**. Prima di ogni swap: + +``` +docker compose config >/dev/null # legge env_file e fallisce SUBITO se manca qualcosa +``` + +⚠️ Un `docker run` sull'immagine **non** e' una prova sufficiente del deploy: non legge +`env_file`, quindi passa anche quando il compose fallirebbe.