Push to deploy
+
+ Commit to main and a Gitea Actions workflow builds
+ a fresh image tagged with the commit SHA, pushes it, and tells
+ Swarm to roll the new version in.
+
diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..f96083c --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,10 @@ + diff --git a/public/index.html b/public/index.html index 2e1590d..ef6dc6e 100644 --- a/public/index.html +++ b/public/index.html @@ -3,27 +3,133 @@
-Served by nginx on port 8080, deployed by Gitea Actions to Docker Swarm.
Deployment demo
+git push.+ Gitea Actions builds the container, pushes to the internal registry, + then Swarm does a zero-downtime rolling update behind Traefik. + No manual steps after the first deploy. +
+
+ Commit to main and a Gitea Actions workflow builds
+ a fresh image tagged with the commit SHA, pushes it, and tells
+ Swarm to roll the new version in.
+
+ Two replicas spread across worker nodes. The
+ start-first update order brings the new container
+ up before draining the old one — no dropped requests.
+
+ Traefik watches Swarm labels, discovers the service on the
+ traefik-public overlay, and fetches a Let’s
+ Encrypt certificate without any extra config.
+
git.dev.serso.org with Gitea Actions.nginx:1.27-alpine serving /public on port 8080.traefik-public overlay, Let’s Encrypt resolver.docker service update --image <sha> testwebsite_web over SSH.+ Questions or want to reuse this template for another app? + Drop a line at + robin@serso.be. +
+