All projects

How odabas.ch gets deployed

A push to main automatically builds a new image and rolls it out on the existing nginx-odabas container.

Deployment pipeline for odabas.chA push to main in the odabas-portfolio repository triggers GitHub Actions, which builds a Docker image and publishes it to ghcr.io. On the server, only the image of the existing nginx-odabas container changes to this new image; name, port 8081, TLS passthrough and Traefik labels stay unchanged. nginx-odabas serves the built Astro files directly, with no database or app container at all. waverider52.com keeps running unchanged with nginx-waverider and WordPress. A future application from Etappe 7 or 8 would take the same path: its own, isolated nginx and app container. waverider52.com and the future application use the shared MariaDB instance with a bind mount for the data; odabas.ch needs no connection to it.GitHub: odabas-portfoliogit push (main)GitHub Actionsbuild-and-deploy:builds imageghcr.ioodabas-portfolio:latestSame pattern planned for Python and Spring BootInternetTraefik edge router (80/443)TLS passthrough, host-based routingodabas.chnginx-odabasImage: ghcr.io/…/odabas-portfolioserves Astro dist/directly (static)Port 8081,no app/DB containerNo database — static sitewaverider52.comnginx-waveriderTLS: 8082 · Redirect: 18082wordpress-waveriderNetworks: wpnet+ traefik_proxyFurther app(Python / Spring Boot,Etappe 7/8)nginx (isolated)App containerMariaDB (Python) orown Postgres (Spring)Shared database instance(mariadb-shared)Bind mount ./data/db-shared — separate database per appodabas.ch: static, shipped as a CI/CD image, no database —waverider52.com and the planned Python app: shared MariaDB instance

Posts