Index denníkaDockup / poznámka z terénu
Note / git-repository-to-production-deployment

Z Git repozitára do produkcie: Sprievodca nasadením v Dockup

Od Git repozitára po produkciu s Dockup: vytvorte service, vyberte Nixpacks alebo Dockerfile, nakonfigurujte health checks, nasaďte aplikáciu, overte ju a v prípade potreby vykonajte rollback.

Presun Git repozitára do produkcie si vyžaduje viac než pripojenie remote repozitára a stlačenie tlačidla deploy. Platforma musí poznať cieľový service, branch, spôsob buildu, start command, listening port, environment, health gate a postup obnovy. Dockup tieto rozhodnutia explicitne sprístupňuje a zároveň podporuje automatické buildy pomocou Nixpacks aj Dockerfiles spravované priamo v repozitári.

Táto príručka začína repozitárom, ktorý ešte nikdy nebol nasadený, a končí overenou URL, históriou nasadení, logmi a otestovaným príkazom na rollback.

Čo treba skontrolovať pred prvým produkčným nasadením?

Overte, že repozitár možno nasadiť bez nedokumentovaného lokálneho stavu. Čistý clone by mal obsahovať všetko potrebné na inštaláciu dependencies a spustenie aplikácie, s výnimkou secrets.

Použite tento checklist:

KontrolaOčakávaný výsledok
Default branchExistuje zamýšľaný produkčný branch
Dependency lockfileJe commitnutý pre reprodukovateľné inštalácie
Start processPočúva na nakonfigurovanom porte a adrese 0.0.0.0
Health routeVráti úspešný výsledok bez externých side effectov
Database migrationsMajú explicitný a bezpečný plán spúšťania
SecretsSú uložené mimo Gitu
Persistent filesPoužívajú volume, nie filesystem kontajnera
RollbackPredchádzajúce nasadenie možno znova spustiť

Nainštalujte CLI a autentifikujte sa:

npm install -g dockup-cli
export DOCKUP_TOKEN="<TOKEN>"
dockup whoami --json

Pred vytvorením čohokoľvek si zobrazte existujúce services:

dockup services --json

Predídete tak vytvoreniu duplicitných resources a overíte presný workspace aj konvenciu cieľov.

Ako Dockup create podporuje Git deployment?

Bežný príkaz na prvé nasadenie vytvorí service, nasadí ho, počká na výsledok a prepojí aktuálny priečinok:

dockup create api \
  --repo https://github.com/acme/api \
  --project production \
  --branch main \
  --deploy \
  --wait \
  --link \
  --json

Výsledný target je production/api. Link .dockup umožní neskorším príkazom rozpoznať tento service pri spustení v repozitári, no produkčná dokumentácia by mala naďalej uvádzať úplný target.

Po prerušenom pokuse o provisioning si zobrazte services a skontrolujte presný target ešte pred opätovným spustením vytvárania:

dockup services --json

Ak production/api už existuje, pokračujte načítaním jeho statusu a histórie nasadení. Predídete tak tomu, aby sa neistý výsledok sieťovej operácie zmenil na duplicitný service. Prístupové údaje k repozitáru uchovávajte mimo source controlu a výstupu príkazov.

Ako Dockup vyberá Nixpacks alebo Dockerfile?

Ak repozitár obsahuje Dockerfile, Dockup ho použije. V opačnom prípade Nixpacks automaticky rozpozná aplikáciu a vytvorí build. Vďaka tomuto poradiu je explicitná definícia kontajnera v repozitári nadradená.

Nixpacks je vhodnou prvou voľbou, ak aplikácia dodržiava bežné konvencie svojho ekosystému a nevyžaduje úpravy na úrovni operačného systému. Dockerfile sa hodí, keď potrebujete konkrétny base image, system packages, multi-stage build, vlastného runtime používateľa alebo presne určené hranice kopírovania.

Nemusíte pridávať prázdny Dockerfile len preto, aby projekt pôsobil „production ready“. Nesprávny Dockerfile môže byť menej reprodukovateľný než konvenčný automatický build. Pri rozhodovaní použite postup v článku Nixpacks vs Dockerfile.

Po vytvorení si zobrazte service:

dockup info production/api --json

Odpoveď obsahuje URL repozitára, branch, typ nasadenia, port, nastavenia buildu a spustenia, kľúče environment premenných, custom domains a údaje o poslednom nasadení.

Ak je potrebné prepísať automaticky rozpoznané príkazy, použite zdokumentované nastavenia:

dockup set production/api \
  --build "npm ci && npm run build" \
  --start "npm start" \
  --port 3000 \
  --json

Nastavenia sa uplatnia pri nasledujúcom nasadení.

Ako nakonfigurovať produkčné environment a health?

Bežné hodnoty a secrets pridávajte samostatne:

dockup env set NODE_ENV=production \
  -s production/api \
  --json

dockup env set DATABASE_URL="$DATABASE_URL" \
  --secret \
  -s production/api \
  --json

Hodnoty secrets sú pri výpise environmentu zamaskované. Možno ich nastaviť alebo nahradiť, no uložená hodnota sa nevracia.

Zmeny environmentu vyžadujú redeploy, pretože bežiaci proces nemôže spätne prijať nové environment premenné. Celý životný cyklus vysvetľuje článok environment variables and secrets.

Nakonfigurujte health gate, ktorý reprezentuje pripravenosť aplikácie:

dockup health production/api \
  --path /healthz \
  --interval 5 \
  --timeout 3 \
  --retries 5 \
  --json

Dockup používa blue-green flow bez downtime a traffic na nové nasadenie odošle až po úspešnom overení readiness. Ak nie je nakonfigurovaná žiadna HTTP path, gate sa môže opierať o readiness TCP portu.

Health route by mala overovať, či je aplikačný proces pripravený obsluhovať requests. Nemala by vykonávať deštruktívne kontroly ani nákladné testy celého systému. Hlboké kontroly dependencies môžu vytvárať falošné výpadky, keď je voliteľná služba v zhoršenom stave.

Ako nasadiť, sledovať a overiť produkciu?

Spustite release a počkajte na terminálny stav:

dockup deploy production/api --wait --json

Predvolený timeout je 900 sekúnd. Exit code 0 znamená úspech. Výsledky deploy_failed a deploy_timeout sú nenulové, takže shell scripts a CI systémy sa správne zastavia.

Ak chcete sledovať build vo formáte NDJSON:

dockup logs production/api --build -f --json

Stream sa ukončí pri úspechu alebo zlyhaní. Ak build prejde, ale kontajner spadne, skontrolujte runtime logs:

dockup logs production/api --json

Po úspešnom release overte stav platformy a verejne dostupné správanie:

dockup status production/api --json
dockup uptime production/api --hours 24 --json
dockup security production/api --json

Uptime probes sa spúšťajú každú minútu a reportujú priemerný čas odpovede aj p95. Security scanning kontroluje CVEs v image a konfiguráciu. Pridajte smoke test špecifický pre aplikáciu a skutočný business endpoint; readiness platformy je nevyhnutná, ale sama osebe nestačí.

Podrobný postup práce s logmi nájdete v článku build and runtime log debugging.

Ako zaviesť automatické nasadenia a previews?

Prvé produkčné nasadenie vykonajte manuálne a dostatočne pomaly na to, aby ste mohli pozorovať každú hranicu procesu. Keď poznáte build, health gate a postup rollbacku, povoľte nasadenie po pushi:

dockup auto-deploy production/api --on --json

Automatické nasadenie by malo byť naviazané na chránený branch a pravidlá code review. Push je produkčný trigger, takže oprávnenia v repozitári sa stávajú oprávneniami k infraštruktúre.

Pull request a branch previews poskytujú izolované URL a environmenty:

dockup pr-preview production/api --on --json
dockup preview branch feature/login production/api --json

V projekte s private networking sa previews pripájajú do projektovej siete. Môžu pristupovať k rovnakej produkčnej databáze na adrese <slug>.internal, no Dockup pre preview automaticky vytvorí databázového používateľa iba na čítanie. Preview tak môže kontrolovať dáta v tvare podobnom produkcii bez možnosti ich meniť.

Tým však nezanikajú povinnosti súvisiace s ochranou súkromia. Prístup k preview by mal byť naďalej obmedzený, auditovaný a používaný iba tam, kde je čítanie produkčných dát povolené.

Ako vykonať rollback chybného nasadenia?

Pred obnovou zachovajte dôkazy. Pri zlyhaní buildu si prečítajte build logs, pri páde aplikácie runtime logs. Potom si zobrazte históriu nasadení:

dockup deployments production/api -n 20 --json

Vyberte deployment ID so známym statusom a timestampom a znova ho spustite:

dockup rollback <deploymentId> production/api --json

Rollback by mal byť explicitnou súčasťou riešenia incidentu. Zaznamenajte ID neúspešného nasadenia, vybrané ID obnovy, dôvod a následnú opravu. Ak databázová migrácia nie je spätne kompatibilná, samotný rollback aplikácie nemusí obnoviť kompatibilitu; návrh migrácií musí byť súčasťou release plánu.

Príručka o deploymentoch bez downtime vysvetľuje prepnutie trafficu, zatiaľ čo Dockup CLI reference dokumentuje všetky flags príkazov.

Záznam o dokončení prvého nasadenia

Na konci procesu od Git repozitára po produkciu zaznamenajte:

  • Presný target project/service.
  • Repozitár a produkčný branch.
  • Spôsob buildu: Nixpacks alebo Dockerfile.
  • Build a start commands, ak boli prepísané.
  • Listening port a health path.
  • Deployment ID a terminálny status.
  • Produkčnú URL a plán custom domain.
  • Overenie uptime a security.
  • Deployment ID rollbacku alebo pravidlo výberu.

Tento záznam zmení druhé nasadenie na rutinnú operáciu namiesto ďalšieho objavovania neznámeho.

Oddeľte stav aplikácie od container image

Zapisovateľný filesystem v service kontajneri považujte za nahraditeľný. Nové nasadenie vytvorí novú verziu a rollback znova spustí starší image; súbory zapísané iba v starom kontajneri preto nie sú trvalou stratégiou pre dáta.

Pre relačný stav, stav dokumentov alebo cache používajte managed databases a pre súbory, ktoré musia prežiť nasadenia, pripojte volume. Pred prvým produkčným release overte mount paths. Kontajnerový priečinok na uploady, ktorý nikdy nebol pripojený ako volume, môže pôsobiť zdravo, kým ďalšie nasadenie dáta neodstráni.

Pred presunom súborov generovaných používateľmi si prečítajte persistent volumes and snapshots. Pri databázovom stave používajte backup systém konkrétnej databázy a nepovažujte hot volume snapshot za backup konzistentný z hľadiska transakcií.

Odhadnite prvý mesiac bez vymýšľania fixného účtu za inštanciu

Dockup meria spotrebu CPU, RAM a disku po minútach a odpočítava ju zo zostatku plánu. Free plan zahŕňa počiatočný kredit $10 a až tri nasadenia; odporúčaný Pro plan stojí $20 mesačne a zahŕňa kredit na využitie vo výške $20.

Keď bude mať service skutočný traffic, skontrolujte jeho spotrebu CPU, RAM a disku v app.dockup.ai. Pri rozhodovaní, či treba upraviť service, databázu alebo persistent disk, vychádzajte zo skutočnej spotreby za minútu, nie z odhadnutého maxima.

Overte čisté druhé nasadenie

Po prvom release urobte neškodnú zmenu schválenú code review a znova ju nasaďte. Overíte tým, že link repozitára, predpoklady build cache, health gate, environment a história fungujú ako trvalý proces, nie iba ako jednorazovo úspešný provisioning.

Udržujte target explicitný

Zaznamenajte finálny reťazec project/service.

Zachovajte URL release

Vedľa deployment ID zaznamenajte produkčnú URL.

Potvrďte ďalší trigger

Zaznamenajte, či budúce releases prebehnú manuálne alebo použijú voliteľný deploy-on-push. Po prvom nasadení tak zostanú oprávnenia repozitára, ochrana branchu a produkčné očakávania zosúladené.

Začnite overiteľným nasadením

Vyberte malý repozitár s jasným start command a health route. Po prvom úspešnom release zdokumentujte presný target a rollback ID.

Začnite bezplatne na app.dockup.ai. Free plan stojí $0 mesačne, zahŕňa počiatočný kredit $10 a podporuje jeden workspace, tri databázy a tri nasadenia.

FAQ

Môže Dockup nasadiť repozitár bez Dockerfile?

Áno. Ak Dockerfile nie je prítomný, Dockup použije Nixpacks na automatické rozpoznanie a build aplikácie.

Čo robí dockup create --link?

Zapíše link .dockup do aktuálneho priečinka, aby neskoršie príkazy mohli rozpoznať priradený target projektu/service.

Prečo by prvé nasadenie malo používať --wait?

Príkaz zostane pripojený, kým nasadenie nedosiahne stav úspechu, zlyhania alebo timeoutu, a vráti exit code, ktorý presne reprezentuje terminálny výsledok.

Uplatnia sa zmeny environment premenných okamžite?

Nie. Uplatnia sa v novom kontajneri pri nasledujúcom nasadení, preto po zmene konfigurácie environmentu service znova nasaďte.

Ako Dockup vykoná rollback aplikácie?

Zobrazte históriu nasadení, identifikujte známe predchádzajúce deployment ID a použite dockup rollback s týmto ID a presným targetom service.