Cloud, Docker & DevOps — брзо и сигурно објавување

← Почетна
Инфраструктура & објавување

Cloud, Docker & DevOps — брзо и сигурно објавување

Ги контејнеризираме сите апликации со Docker, ги оркестрираме со Docker Compose (или Kubernetes за enterprise проекти), го конфигурираме Caddy како reverse proxy со автоматски SSL и го автоматизираме целиот циклус на објавување преку GitHub Actions — од commit до продукција.

Контејнеризација со Docker и Docker Compose

Секој сервис има свој multi-stage Dockerfile: build фаза што ги инсталира зависностите и компајлира, и минимална финална фаза (distroless или alpine) што ги содржи само потребните артефакти. Типична Next.js слика излегува под 150MB; FastAPI под 80MB. Сликите повторно се градат при секој merge на main и се означуваат семантички (`v1.2.3` + `latest`).

Docker Compose го дефинира целиот стек: фронтенд, API, DB, Redis, worker. Чувствителните променливи (лозинка за DB, API клучеви, Stripe secret) се во `.env` исклучен од git — никогаш не се хардкодираат во сликата. Health checks во Compose осигуруваат дека зависностите се подготвени пред стартот (DB подготвена → API старт → фронтенд старт).

  • Build кеш со `--mount=type=cache` за npm ci во CI
  • Оптимизиран редослед на слоеви: стабилни зависности → изворен код
  • Управување со тајни со Docker secrets или HashiCorp Vault за enterprise проекти
  • `restart: unless-stopped` + `docker compose up --no-deps` за атомско објавување

Caddy — модерен reverse proxy со автоматски SSL

Caddy 2.8 го управува SSL/TLS автоматски преку ACME (Let's Encrypt или ZeroSSL) — ниту еден истечен сертификат, никаква рачна конфигурација. HTTP/2 и HTTP/3 (QUIC) се активни по default. Безбедносните headers (HSTS, X-Frame-Options, CSP) се поставуваат глобално преку повторно употребливи snippet-и. Декларативната Caddyfile конфигурација може да се споредува (diff) и се верзионира во git.

Rate limiting, gzip/brotli компресија и структурирано JSON логирање се активираат преку вградени Caddy директиви — без nginx модули или сложена Apache конфигурација. Пристапот до чувствителни рути (`/admin`, `.env`, `.git`) враќа 444 (без одговор), конфигурирано како глобален безбедносен snippet.

  • Само TLS 1.3 со модерни cipher suites
  • On-demand TLS за multi-tenant SaaS со динамични поддомени
  • Reload без прекин — `caddy reload` не ги прекинува активните врски
  • Логирање Caddy → Loki → Grafana — анализа на сообраќајот и алармирање за аномалии

GitHub Actions CI/CD и мониторинг

CI pipeline-от се извршува при секој PR: lint, type check, unit тестови, build на Docker слика, скенирање на ранливости (Trivy). Ако сè помине, сликата се објавува на registry, а објавувањето на staging се прави автоматски. Merge на main = автоматско објавување во продукција со healthcheck по објавувањето. Автоматски rollback ако healthcheck-от падне во рок од 60 секунди.

Мониторинг со Grafana + Prometheus за апликативни метрики (латенција, error rate, големина на редица) и Loki за агрегација на логови. Алармите се конфигурирани на Slack/email: error rate >1%, латенција P95 >500ms, диск >85%. Надворешен uptime мониторинг со Better Uptime — јавна SLA контролна табла достапна на барање.

  • Trivy скенирање на ранливости на сликите — блокада при Critical CVE
  • Dependabot + auto-merge за patch ажурирања (потребен е зелен CI)
  • Автоматски бекап на DB на S3-компатибилно складиште (секоја ноќ, чување 30 дена)

Предности и ограничувања

Предности

  • Објавување со автоматски rollback при неуспешен healthcheck.
  • Автоматски SSL/TLS преку Caddy — ниту еден рачно истечен сертификат.
  • Репродуцибилна околина: истата Docker слика на dev, staging, продукција.
  • Мониторинг и аларми (Grafana, Loki) — проблемите се гледаат пред корисниците.

Ограничувања

  • Docker Compose не скалира како Kubernetes за enterprise со повеќе јазли.
  • Почетното поставување на CI/CD бара време и DevOps експертиза.
  • Сликите и логовите трошат дисковен простор — бараат периодично чистење.
  • Комплетниот мониторинг (Prometheus + Grafana) додава сервиси за одржување.

Кус заклучок

Docker + Caddy + GitHub Actions е идеалната комбинација за сигурно објавување на VPS или неколку јазли. За десетици јазли со агресивно автоматско скалирање, премини на Kubernetes.

Табела со спецификации

МожностГраница / прагТипична употреба
ОркестрацијаDocker Compose, комплетен стекЕден јазол; повеќе јазли бараат Swarm/K8sVPS, мали и средни проекти
Reverse proxyCaddy 2.8, HTTP/3, автоматски SSLМногу сложени правила бараат проширена конфигурацијаПовеќе домени, multi-tenant
CI/CDGitHub Actions, автоматско објавувањеCI минутите се наплатуваат над бесплатното нивоАвтоматски од commit до продукција
Типичен трошокVPS од ~5€/месецМониторингот + бекапот додаваат трошокОд еден сајт до повеќе брендови

Docker Compose наспроти Kubernetes

КритериумDocker ComposeKubernetes
Сложеност на поставувањеМалаГолема
Скалирање со повеќе јазли / автоматско скалирањеОграничено (еден јазол)Одлично
Погоден заVPS, мали и средни проектиГолеми флоти, enterprise

Често поставувани прашања

Зошто Caddy, а не Nginx?

Caddy го управува SSL/TLS автоматски преку ACME, ги активира HTTP/2 и HTTP/3 по default и има кратка декларативна конфигурација. Nginx бара certbot и повеќе рачна конфигурација за ист резултат.

Дали ми треба Kubernetes?

Не за поголемиот дел од сајтовите. Docker Compose на VPS сигурно управува со еден сајт или неколку сервиси. Kubernetes станува корисен дури кај десетици јазли со агресивно автоматско скалирање.

Како функционира објавувањето?

GitHub Actions гради нова слика, ја стартува покрај старата, извршува healthcheck, па го префрла сообраќајот. Ако healthcheck-от падне во рок од 60 секунди, автоматски се прави rollback на претходната верзија.

Каков мониторинг препорачувате?

Grafana + Prometheus за метрики (латенција, error rate) и Loki за агрегирани логови, со аларми на Slack/email. За надворешен uptime додаваме независен сервис како Better Uptime.

4b2b.net
Деловен екосистем
4conta.ro
Сметководство
4invoices.net
Апликација за фактурирање
4expenses.net
Управување со трошоци
4notify.net
Известувања
4hosting.net
Хостинг
4database.net
Бази на податоци
4buildsite.net
Изработка на веб-страници
4myapp.net
Изработка на апликации
4avatars.net
AI аватари
4chaty.net
AI чатбот
4webagency.net
Софтвер за веб-агенции
4softedu.net
Веб-страници за образование
4softcrm.net
CRM платформа
4softerp.net
ERP систем
4softhr.net
Управување со персонал
4mystaff.net
Портал за вработени
4myprojects.net
Управување со проекти
4mycontracts.net
Договори
4docs.net
Управување со документи
4appointments.net
Закажување термини
4marketingonline.net
Маркетинг
4insurance.net
Осигурување
4property.net
Недвижности
4lawyers.net
Софтвер за адвокати
4mygarage.net
Автосервис
4driving.net
Автошколи
4fleet.net
Управување со возен парк
4myevents.net
Настани
4therapy.net
Терапија
4clinics.net
Клиники
4dental.net
Стоматолошки ординации
4restaurants.net
Ресторани
4beautify.net
Салон за убавина
4gym.net
Фитнес центри
4guards.net
Агенции за обезбедување
4softvet.net
Ветеринарни ординации
4softauto.net
Софтвер за авто бизнис
4construct.net
Градежни фирми
4marketplace.net
Маркетплејс
4shopy.net
Онлајн продавница
4pricing.net
Споредба на цени
4salefood.net
Достава на храна
4rentify.net
Изнајмување
4transports.net
Транспорт
4agencytravel.net
Туристичка агенција
4hotel.net
Управување со хотели
4ong.net
Управување со НВО