Ský, Docker og DevOps — hröð og áreiðanleg útgáfa
Við setjum öll forrit í Docker-gáma, stýrum þeim með Docker Compose (eða Kubernetes fyrir stórfyrirtækjaverkefni), setjum upp Caddy sem öfugan milliþjón með sjálfvirku SSL og sjálfvirknivæðum allt útgáfuferlið með GitHub Actions — frá commit til framleiðslu.
Gámavæðing með Docker og Docker Compose
Hver þjónusta hefur sína eigin fjölþrepa Dockerfile: byggingarþrep sem setur upp háðar einingar og þýðir, og lágmarks lokaþrep (distroless eða alpine) sem inniheldur aðeins nauðsynleg afurðaskjöl. Dæmigerð Next.js-mynd er undir 150MB; FastAPI-mynd undir 80MB. Myndir eru endurbyggðar við hvern samruna á main og merktar með útgáfumerki (`v1.2.3` + `latest`).
Docker Compose skilgreinir allan stafla: framenda, API, gagnagrunn, Redis og vinnsluferla. Viðkvæmar breytur (lykilorð gagnagrunns, API-lyklar, Stripe-leyndarmál) eru í `.env` sem er utan git — aldrei harðkóðaðar í myndina. Heilsuskoðanir í Compose tryggja að háðar einingar séu tilbúnar fyrir ræsingu (gagnagrunnur tilbúinn → API ræst → framendi ræstur).
- Byggingarskyndiminni með `--mount=type=cache` — npm ci endurnýtir skyndiminni í CI
- Fínstillt röðun laga: stöðugar háðar einingar → frumkóði
- Leyndarmálastjórnun með Docker secrets eða HashiCorp Vault fyrir stórfyrirtækjaverkefni
- `restart: unless-stopped` + `docker compose up --no-deps` fyrir atómíska útgáfu
Caddy — nútímalegur öfugur milliþjónn með sjálfvirku SSL
Caddy 2.8 stýrir SSL/TLS sjálfkrafa í gegnum ACME (Let's Encrypt eða ZeroSSL) — vottorðin endurnýjast sjálfkrafa, engin handvirk uppsetning. HTTP/2 og HTTP/3 (QUIC) eru virk sjálfgefið. Öryggishausar (HSTS, X-Frame-Options, CSP) eru stilltir á heimsvísu með endurnýtanlegum brotum. Yfirlýsandi Caddyfile-stillingin er samanburðarhæf og útgáfustýrð í git.
Hraðatakmörkun, gzip/brotli-þjöppun og skipulögð JSON-skráning eru virkjuð með innbyggðum Caddy-tilskipunum — án nginx-eininga eða flókinnar Apache-uppsetningar. Aðgangur að viðkvæmum slóðum (`/admin`, `.env`, `.git`) skilar 444 (ekkert svar), stillt sem altækt öryggisbrot.
- Aðeins TLS 1.3 með nútímalegum dulmálssvítum
- On-demand TLS fyrir fjölleigjenda SaaS með kviknum undirlénum
- Endurhleðsla stillinga — `caddy reload` rýfur ekki virkar tengingar
- Caddy-skráning → Loki → Grafana — umferðargreining og viðvaranir um frávik
GitHub Actions CI/CD og vöktun
CI-ferlið keyrir við hverja breytingabeiðni: lint, tegundaskoðun, einingarpróf, byggingu Docker-myndar og veikleikaskönnun (Trivy). Ef allt stenst er myndin send í skrásetningu og útgáfa á prófunarumhverfi fer sjálfkrafa fram. Samruni á main = sjálfvirk útgáfa í framleiðslu með heilsuskoðun eftir útgáfu. Sjálfvirk afturköllun ef heilsuskoðun mistekst innan 60 sekúndna.
Vöktun með Grafana + Prometheus fyrir mælikvarða forrits (svartími, villutíðni, stærð biðraðar) og Loki fyrir söfnun annála. Viðvaranir settar upp á Slack/tölvupóst: villutíðni >1%, svartími P95 >500ms, diskur >85%. Ytri vöktun á uppitíma með Better Uptime — opið SLA-stjórnborð fáanlegt ef óskað er.
- Trivy-veikleikaskönnun á myndum — stöðvun við Critical CVE
- Dependabot + sjálfvirkur samruni fyrir plástrauppfærslur (grænt CI skilyrði)
- Sjálfvirkt afrit gagnagrunns í S3-samhæfða geymslu (á hverri nóttu, 30 daga varðveisla)
Kostir og takmarkanir
Kostir
- Útgáfa við hlið eldri útgáfu, með sjálfvirkri afturköllun ef heilsuskoðun mistekst.
- Sjálfvirkt SSL/TLS með Caddy — vottorð endurnýjast sjálfkrafa, án handvirkrar umsjónar.
- Endurtakanlegt umhverfi: sama Docker-mynd í þróun, prófun og framleiðslu.
- Vöktun og viðvaranir (Grafana, Loki) fyrir mælikvarða og annála.
Takmarkanir
- Docker Compose skalar ekki eins og Kubernetes fyrir fjölhnúta stórfyrirtækjaumhverfi.
- Upphafleg CI/CD-uppsetning krefst tíma og DevOps-sérþekkingar.
- Myndir og annálar taka diskpláss — krefjast reglulegrar hreinsunar.
- Full vöktun (Prometheus + Grafana) bætir við þjónustum sem þarf að viðhalda.
Stutt niðurstaða
Docker + Caddy + GitHub Actions er kjörsamsetning fyrir áreiðanlega útgáfu á VPS eða fáum hnútum. Fyrir tugi hnúta með ágengri sjálfvirkri skölun skaltu skipta yfir í Kubernetes.
Tækniforskriftir
| Geta | Takmörk / þröskuldur | Dæmigerð notkun | |
|---|---|---|---|
| Stýring | Docker Compose, allur stafli | Einn hnútur; fleiri hnútar krefjast Swarm/K8s | VPS, lítil og meðalstór verkefni |
| Öfugur milliþjónn | Caddy 2.8, HTTP/3, sjálfvirkt SSL | Mjög flóknar reglur krefjast umfangsmeiri stillinga | Mörg lén, fjölleigjendakerfi |
| CI/CD | GitHub Actions, sjálfvirk útgáfa | CI-mínútur gjaldfærðar umfram ókeypis mörk | Sjálfvirkt frá commit til framleiðslu |
| Dæmigerður kostnaður | VPS frá ~5€/mánuði | Vöktun + afrit bæta við kostnaði | Frá einum vef til margra vörumerkja |
Docker Compose samanborið við Kubernetes
| Viðmið | Docker Compose | Kubernetes |
|---|---|---|
| Flækjustig uppsetningar | Lítið | Mikið |
| Fjölhnútaskölun / sjálfvirk skölun | Takmörkuð (einn hnútur) | Framúrskarandi |
| Hentar fyrir | VPS, lítil og meðalstór verkefni | Stór flotakerfi, stórfyrirtæki |
Algengar spurningar
Hvers vegna Caddy en ekki Nginx?
Caddy stýrir SSL/TLS sjálfkrafa í gegnum ACME, virkjar HTTP/2 og HTTP/3 sjálfgefið og hefur stutta yfirlýsandi stillingu. Nginx krefst certbot og meiri handvirkrar uppsetningar fyrir sömu niðurstöðu.
Þarf ég Kubernetes?
Ekki fyrir flesta vefi. Docker Compose á VPS sér áreiðanlega um einn vef eða nokkrar þjónustur. Kubernetes verður gagnlegt fyrst við tugi hnúta með ágengri sjálfvirkri skölun.
Hvernig virkar útgáfa við hlið eldri útgáfu?
GitHub Actions byggir nýja mynd, ræsir hana við hlið þeirrar gömlu, keyrir heilsuskoðun og færir síðan umferðina. Ef heilsuskoðun mistekst innan 60 sekúndna er sjálfkrafa afturkallað í fyrri útgáfu.
Hvaða vöktun mælið þið með?
Grafana + Prometheus fyrir mælikvarða (svartími, villutíðni) og Loki fyrir safnaða annála, með viðvörunum á Slack/tölvupóst. Fyrir ytri vöktun á uppitíma bætum við við óháðri þjónustu eins og Better Uptime.