Docker e Docker Compose
Requisiti: un server Linux con Docker e Docker Compose e, per la prenotazione online, un dominio che punti al server.
Prova in locale
Sezione intitolata “Prova in locale”Il file compose.yaml nella radice del repository compila l’immagine dai sorgenti e avvia un’istanza in modalità
sviluppo con Mailpit per leggere le email inviate. Non usarlo in produzione.
git clone https://github.com/coste360/porto.git && cd portoPORTO_BOOTSTRAP_OWNER_EMAIL=titolare@porto.test PORTO_BOOTSTRAP_OWNER_NAME="Mario Rossi" \PORTO_BOOTSTRAP_OWNER_ORG="Marina Prova SRL" PORTO_ADMIN_PASSWORD=password-di-prova \ docker compose up --build # oppure: make upApri http://localhost:8080/admin/ e accedi con quelle credenziali (password di almeno 12 caratteri); le email si
leggono su http://localhost:8025. Per caricare il porto dimostrativo:
docker compose exec porto /porto seed demo (Dati dimostrativi).
Installazione su un server
Sezione intitolata “Installazione su un server”I file di produzione sono in deploy/: docker-compose.yml (SQLite nel volume porto-data) e
docker-compose.postgres.yml (PostgreSQL 17). Il container gira come utente non root, con file system in sola
lettura e nessuna capability.
-
Configurazione. Parti da
.env.examplee creadeploy/.env:Finestra del terminale git clone https://github.com/coste360/porto.git && cd portocat > deploy/.env <<FINEPORTO_BASE_URL=https://porto.mio-marina.itPORTO_SECRET_KEY=$(openssl rand -base64 32)PORTO_SMTP_URL=PORTO_BOOTSTRAP_OWNER_EMAIL=titolare@mio-marina.itPORTO_BOOTSTRAP_OWNER_NAME=Mario RossiPORTO_BOOTSTRAP_OWNER_ORG=Marina Esempio SRLPORTO_ADMIN_PASSWORD=scegli-una-password-lungaFINELe variabili sono descritte in Configurazione.
-
Immagine. Quando l’immagine è pubblicata il compose la scarica da sola (
PORTO_VERSION, predefinitolatest). Finché non lo è, compilala sul server e indica il tag:Finestra del terminale docker build -f deploy/Dockerfile -t ghcr.io/coste360/porto:dev . # oppure: make dockerecho "PORTO_VERSION=dev" >> deploy/.env -
Avvio.
Finestra del terminale docker compose -f deploy/docker-compose.yml up -d -
Primo accesso su
https://porto.mio-marina.it/admin/: vedi Primo avvio.
Con PostgreSQL
Sezione intitolata “Con PostgreSQL”Aggiungi POSTGRES_PASSWORD a deploy/.env e usa l’altro file:
echo "POSTGRES_PASSWORD=$(openssl rand -hex 24)" >> deploy/.envdocker compose -f deploy/docker-compose.postgres.yml up -dIl compose inserisce la password in DATABASE_URL senza codificarla: usa solo caratteri sicuri negli URL, come
quelli di openssl rand -hex. Vedi Database.
Comandi del binario nel container
Sezione intitolata “Comandi del binario nel container”L’immagine è distroless e non ha una shell, ma exec lancia direttamente il binario:
docker compose -f deploy/docker-compose.yml exec porto /porto versiondocker compose -f deploy/docker-compose.yml exec porto /porto migrate statusdocker compose -f deploy/docker-compose.yml exec porto /porto backup --out /data/backup.porto-backupMetti Porto dietro un reverse proxy oppure lascia che ottenga da sé i certificati Let’s Encrypt: vedi
HTTPS e reverse proxy. I controlli di salute vanno fatti dall’esterno con
GET /healthz e GET /readyz (Monitoraggio e log).
Porto è sviluppato da Coste360 SRL. Codice sorgente disponibile con licenza BSL 1.1; il marchio Porto è escluso dalla licenza.