Il sito lascia le piattaforme: separazione fusa in main
Fuso `feat/split-apps` (fermo dal 03/09 e mai portato in main, mentre il container delle piattaforme girava gia' da li'): il sito e le piattaforme erano online in due copie, con database diversi e ruoli divergenti — `nicola` era `admin` di la' e `piattaforme` di qua, e la promozione di ieri valeva solo su una delle due. Adesso `insanitylab.it/campus`, `/piattaforme` e `/login` fanno 404: le aree riservate stanno solo su `piattaforme.tielogic.xyz`. Il pannello `/admin` resta. Nel database del sito restano `admin` ed `editor`; `nicola` e `adriano` sono usciti. Il lavoro di oggi e' passato intatto: edizione `settembre-2026` coi cinque pacchetti, i 73 tag, il countdown al 19/09 e la correzione del sabato. Verificato sull'immagine nuova prima di metterla, chiedendo la pagina a quattro date. Tre cose che lo split del 03/09 aveva lasciato indietro, trovate eseguendo: - **`Dockerfile` del sito copiava ancora `campus-content`**, spostato sotto `apps/platforms`: il build falliva. Nel sito non c'era piu' un solo riferimento a quella cartella - solo la riga del Dockerfile. Rimossa. - **`migra-utenti.mjs --togli-dal-sito` era un no-op silenzioso**: il `continue` sugli utenti gia' presenti a destinazione saltava anche la cancellazione dall'origine. Siccome copiare e ripulire sono due passi separati apposta, l'opzione non funzionava proprio nel caso per cui esiste. Ora chi e' gia' di la' esce di qua lo stesso, e il riepilogo dice quanti ne ha tolti. - **`.env` non e' in git**, quindi il merge non lo ha spostato sotto `apps/sito/`. L'`up` e' fallito dopo che il `down` aveva gia' tolto il container: **9,7 secondi di sito giu'**, misurati. La prova con `docker run` non lo aveva visto perche' non legge `env_file`. Il rimedio - `docker compose config` prima dello swap - e' scritto nel README del sito, che prima non diceva come si fa un deploy. Sito 149 test verdi, piattaforme 202. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FPKFABRT3y26dFNMquF3CS
This commit is contained in:
Symlink
+1
@@ -0,0 +1 @@
|
||||
/opt/docker/insanitylab-apps/apps/platforms/node_modules
|
||||
@@ -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.');
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user