Bölüm 21 / 33
Dokploy ve Uygulama Dağıtımı
Dokploy üzerinden uygulama, Docker Compose, domain, sertifika, environment, deployment ve sunucu yönetimi kavramları.
4 canlı örnek — seçerek incele
İlgili kavramlar: Docker, Container, Compose
Container düşüncesi
Compose ile servisler birlikte ayağa kalkar; her kutu bir container.
Docker tabanlı uygulama, veritabanı ve Compose projelerini sunucuya dağıtıp yöneten platform.
Kendi sunucunda çalışan ve uygulama dağıtımını platform hizmeti gibi kolaylaştıran sistem.
Dokploy içinde ilişkili application, database ve compose servislerini gruplandıran alan.
Production, staging veya development gibi proje dağıtım bağlamı.
Git repository veya Docker image'dan dağıtılan tek uygulama servisi.
Birden fazla service içeren compose tanımının Dokploy üzerinden yönetilmesi.
PostgreSQL, MySQL, MariaDB, MongoDB veya Redis gibi yönetilen veri servisi.
Dokploy'un uygulama ve container çalıştırdığı Docker host.
Ana Dokploy paneline eklenen başka bir dağıtım sunucusu.
Birden fazla sunucunun ortak dağıtım veya Swarm yapısında kullanılması.
Dokploy'un bazı gelişmiş replica ve cluster senaryolarında kullandığı orkestrasyon modu.
Dokploy dağıtımlarında domain ve TLS trafiğini servislere yönlendiren reverse proxy.
GitHub, GitLab veya başka repository kaynağı sağlayan servis.
Dağıtılacak uygulama kaynak kodunun bulunduğu Git deposu.
Deployment sırasında izlenecek kaynak kod dalı.
Nixpacks, Dockerfile, buildpack veya static gibi uygulama build yöntemi.
Repository içindeki Dockerfile kullanılarak image üretilmesi.
Kaynak kod dilini algılayıp otomatik build planı ve image oluşturan araç.
Build çıktısı yalnızca HTML, CSS, JS ve asset olan uygulama türü.
Dockerfile build sırasında kullanılacak repository alt dizini.
Build edilecek Dockerfile'ın repository içindeki konumu.
Docker image oluşturma aşamasına geçirilen ARG değeri.
Bağımlılık sonrası production çıktısı oluşturan komut.
Container içinde uygulama sürecini başlatan komut.
Uygulama bağımlılıklarını kuran komut.
Frontend veya static build sonucunun oluştuğu klasör.
- PortT
Uygulama container'ının içeride dinlediği port.
Uygulamaya yönlendirilecek hostname.
Bir domain ve path'i belirli service ve container portuna bağlama.
Aynı domain altında /api ve / gibi yolları farklı servislere yönlendirme.
Domain için TLS sertifikalı güvenli erişim.
Domain doğrulamasıyla ücretsiz TLS sertifikası sağlayan sertifika otoritesi.
TLS sertifikasının süresi dolmadan otomatik yenilenmesi.
Kullanıcı tarafından sağlanan TLS sertifikası ve private key.
Runtime uygulama yapılandırmasını anahtar-değer olarak tanımlama.
Parola ve token gibi hassas environment değeri.
Bir servis değerini başka servis veya proje değişkeninden türetme.
Container başladığında uygulamaya sunulan yapılandırma.
Yalnızca image veya frontend build sırasında kullanılan değişken.
Aynı yapılandırma veya güncel kaynakla uygulamayı yeniden dağıtma.
Kaynak kodu build edip container'ı yeni sürümle çalıştırma süreci.
Repository push veya webhook olayında otomatik deployment başlatma.
Gizli URL'ye gelen istekle deployment başlatma.
Panelden kullanıcı tarafından başlatılan deployment.
Önceki deployment sürüm, zaman ve sonuçlarının kaydı.
Clone, build, image ve start adımlarının çıktısı.
Image oluşturma ve dependency kurulum çıktılarını gösteren log.
Çalışan uygulama container'ının stdout/stderr logları.
Build, healthcheck veya container start hatasıyla tamamlanmayan dağıtım.
Önceki çalışan deployment veya image sürümüne geri dönme.
Yeni sürüme geçerken kullanıcı trafiğinde kesinti oluşturmamaya çalışan dağıtım.
Aynı uygulamanın birden fazla çalışan örneği.
Uygulamanın replica veya kaynak sayısını artırma/azaltma.
Yeni container'ın trafik almaya hazır olduğunu doğrulayan kontrol.
Çalışan service container'ını yeniden başlatma.
Uygulama container veya servislerini durdurma.
Dağıtım nesnesini ve seçime göre ilişkili kaynakları kaldırma.
Deployment yenilense de korunması gereken volume veya bind mount verisi.
Kalıcı depolama alanını container içindeki yola bağlama.
Sunucu üzerindeki klasörü container içine bağlama.
Belirli yapılandırma dosyasını container içine yerleştirme.
Veritabanı veya volume verisinin geri yüklenebilir kopyası.
Dokploy veritabanı servisinin zamanlı veya manuel yedeği.
Yedeğin hangi periyotta otomatik alınacağını belirler.
S3 uyumlu storage veya sunucu yolu gibi yedek hedefi.
Yedekten veritabanı veya uygulama verisini geri yükleme.
Kaç yedeğin veya kaç günlük yedeğin saklanacağı.
Host, port, kullanıcı, parola ve veritabanı adını içeren bağlantı adresi.
Dokploy/Docker ağı içinde database servisine adıyla erişim.
Veritabanını Docker host dışından erişilebilir yapan yayınlanmış port.
Yalnızca aynı internal network'teki uygulamaların erişebildiği veritabanı.
Veritabanına giriş yapan ve belirli yetkilere sahip kullanıcı.
Veritabanı kullanıcısının gizli kimlik bilgisi.
Uygulama ve sunucu CPU, RAM, disk ve durum bilgilerinin izlenmesi.
Sunucunun işlemci, bellek, disk ve ağ kullanım ölçümleri.
Belirli container'ın kaynak tüketim ölçümleri.
Image, volume, log ve container'ların kullandığı disk miktarı.
Kullanılmayan image, container, network ve build cache'ini kontrollü temizleme.
Referans edilmeyen Docker kaynaklarını silen bakım işlemi.
Belirli aralıkta veya cron ifadesinde çalışan deployment görevi.
Dakika, saat, gün, ay ve hafta gününe göre zamanlama ifadesi.
Uygulama container bağlamında migration veya seed gibi tek seferlik komut.
Yeni sürüm öncesi veya sırasında şema değişikliklerini uygulama.
Yeni sürüm trafik almadan önce çalıştırılacak migration veya hazırlık komutu.
Deployment başarıyla tamamlandıktan sonra çalıştırılacak görev.
Container start veya bakım sürecinde kullanıcı tarafından tanımlanan komut.
Application image'larının çekildiği veya yayınlandığı registry.
Private registry erişimi için kullanıcı ve token bilgisi.
Repository build etmek yerine registry'deki hazır image'ı çalıştırma.
Dağıtılacak image sürümünü belirler.
latest yerine commit SHA veya sürüm gibi değişmeyen tag kullanma.
Deployment'ı belirli commit ile izlenebilir yapan kaynak kimliği.
Branch veya pull request için geçici dağıtım ortamı.
Canlı öncesi production benzeri test dağıtımı.
Gerçek kullanıcı trafiği alan canlı dağıtım.
Aynı Dokploy panelinde farklı kullanıcı/ekiplerin kaynaklarını izole yönetme.
Kullanıcının hangi proje, server ve deployment işlemlerine erişebileceği.
Dokploy çalışma alanına eklenen kullanıcı.
- RoleT
Yönetim ve deployment izinlerini gruplayan yetki.
Kimin ne zaman hangi dağıtım veya ayar değişikliğini yaptığını kaydeder.
Deployment başarı, hata veya sunucu olayı bildirimi.
Dokploy olaylarını Slack, Discord veya başka HTTP endpoint'e gönderme.
- SMTPT
Sistem e-posta bildirimleri için kullanılan posta gönderim ayarı.
Build, routing, TLS, network ve container sorunlarını sistematik teşhis etme.
Reverse proxy'nin uygulama container'ından geçerli yanıt alamaması.
Proxy'nin yönlendirdiği port ile uygulamanın dinlediği portun farklı olması.
Container'ın başlatılıp kısa sürede sürekli çökerek yeniden başlaması.
Uygulama çalışsa bile sağlık kontrolü başarısız olduğu için hazır sayılmaması.
Yeni domain kaydının DNS resolver'lara yayılması için geçen süre.
Let's Encrypt'in domain doğrulamasını tamamlayamaması.
Host, credential, network veya limit nedeniyle veritabanına bağlanamama.
Volume veya dosya sahibinin container kullanıcısıyla uyuşmaması.
Container veya host belleğinin yetersiz kalması.
Log, image, yedek veya volume nedeniyle disk alanının tükenmesi.
Rotation uygulanmayan container loglarının sürekli büyümesi.
Yedek, migration, healthcheck, smoke test ve rollback hazırlığını doğrulayan liste.
| Kavram | Seviye | Kısa açıklama |
|---|---|---|
| Dokploy | T | Docker tabanlı uygulama, veritabanı ve Compose projelerini sunucuya dağıtıp yöneten platform. |
| Self-hosted PaaS | O | Kendi sunucunda çalışan ve uygulama dağıtımını platform hizmeti gibi kolaylaştıran sistem. |
| Project | T | Dokploy içinde ilişkili application, database ve compose servislerini gruplandıran alan. |
| Environment | T | Production, staging veya development gibi proje dağıtım bağlamı. |
| Application | T | Git repository veya Docker image'dan dağıtılan tek uygulama servisi. |
| Docker Compose Application | T | Birden fazla service içeren compose tanımının Dokploy üzerinden yönetilmesi. |
| Database Service | T | PostgreSQL, MySQL, MariaDB, MongoDB veya Redis gibi yönetilen veri servisi. |
| Server | T | Dokploy'un uygulama ve container çalıştırdığı Docker host. |
| Remote Server | O | Ana Dokploy paneline eklenen başka bir dağıtım sunucusu. |
| Cluster | O | Birden fazla sunucunun ortak dağıtım veya Swarm yapısında kullanılması. |
| Docker Swarm | İ | Dokploy'un bazı gelişmiş replica ve cluster senaryolarında kullandığı orkestrasyon modu. |
| Traefik | O | Dokploy dağıtımlarında domain ve TLS trafiğini servislere yönlendiren reverse proxy. |
| Git Provider | T | GitHub, GitLab veya başka repository kaynağı sağlayan servis. |
| Repository | T | Dağıtılacak uygulama kaynak kodunun bulunduğu Git deposu. |
| Branch | T | Deployment sırasında izlenecek kaynak kod dalı. |
| Build Type | T | Nixpacks, Dockerfile, buildpack veya static gibi uygulama build yöntemi. |
| Dockerfile Build | T | Repository içindeki Dockerfile kullanılarak image üretilmesi. |
| Nixpacks | O | Kaynak kod dilini algılayıp otomatik build planı ve image oluşturan araç. |
| Static Site | T | Build çıktısı yalnızca HTML, CSS, JS ve asset olan uygulama türü. |
| Build Context | O | Dockerfile build sırasında kullanılacak repository alt dizini. |
| Dockerfile Path | T | Build edilecek Dockerfile'ın repository içindeki konumu. |
| Build Argument | O | Docker image oluşturma aşamasına geçirilen ARG değeri. |
| Build Command | T | Bağımlılık sonrası production çıktısı oluşturan komut. |
| Start Command | T | Container içinde uygulama sürecini başlatan komut. |
| Install Command | T | Uygulama bağımlılıklarını kuran komut. |
| Output Directory | T | Frontend veya static build sonucunun oluştuğu klasör. |
| Port | T | Uygulama container'ının içeride dinlediği port. |
| Domain | T | Uygulamaya yönlendirilecek hostname. |
| Domain Mapping | T | Bir domain ve path'i belirli service ve container portuna bağlama. |
| Path-based Routing | O | Aynı domain altında /api ve / gibi yolları farklı servislere yönlendirme. |
| HTTPS | T | Domain için TLS sertifikalı güvenli erişim. |
| Let's Encrypt | T | Domain doğrulamasıyla ücretsiz TLS sertifikası sağlayan sertifika otoritesi. |
| Certificate Renewal | O | TLS sertifikasının süresi dolmadan otomatik yenilenmesi. |
| Custom Certificate | O | Kullanıcı tarafından sağlanan TLS sertifikası ve private key. |
| Environment Variable | T | Runtime uygulama yapılandırmasını anahtar-değer olarak tanımlama. |
| Secret Variable | T | Parola ve token gibi hassas environment değeri. |
| Variable Reference | O | Bir servis değerini başka servis veya proje değişkeninden türetme. |
| Runtime Environment | T | Container başladığında uygulamaya sunulan yapılandırma. |
| Build-time Environment | O | Yalnızca image veya frontend build sırasında kullanılan değişken. |
| Redeploy | T | Aynı yapılandırma veya güncel kaynakla uygulamayı yeniden dağıtma. |
| Deployment | T | Kaynak kodu build edip container'ı yeni sürümle çalıştırma süreci. |
| Auto Deploy | T | Repository push veya webhook olayında otomatik deployment başlatma. |
| Webhook Deploy | O | Gizli URL'ye gelen istekle deployment başlatma. |
| Manual Deploy | T | Panelden kullanıcı tarafından başlatılan deployment. |
| Deployment History | T | Önceki deployment sürüm, zaman ve sonuçlarının kaydı. |
| Deployment Log | T | Clone, build, image ve start adımlarının çıktısı. |
| Build Log | T | Image oluşturma ve dependency kurulum çıktılarını gösteren log. |
| Runtime Log | T | Çalışan uygulama container'ının stdout/stderr logları. |
| Failed Deployment | T | Build, healthcheck veya container start hatasıyla tamamlanmayan dağıtım. |
| Rollback | T | Önceki çalışan deployment veya image sürümüne geri dönme. |
| Zero-downtime Deployment | O | Yeni sürüme geçerken kullanıcı trafiğinde kesinti oluşturmamaya çalışan dağıtım. |
| Replica | O | Aynı uygulamanın birden fazla çalışan örneği. |
| Scale | O | Uygulamanın replica veya kaynak sayısını artırma/azaltma. |
| Healthcheck | O | Yeni container'ın trafik almaya hazır olduğunu doğrulayan kontrol. |
| Container Restart | T | Çalışan service container'ını yeniden başlatma. |
| Application Stop | T | Uygulama container veya servislerini durdurma. |
| Application Delete | T | Dağıtım nesnesini ve seçime göre ilişkili kaynakları kaldırma. |
| Persistent Storage | T | Deployment yenilense de korunması gereken volume veya bind mount verisi. |
| Volume Mount | T | Kalıcı depolama alanını container içindeki yola bağlama. |
| Bind Mount | O | Sunucu üzerindeki klasörü container içine bağlama. |
| File Mount | O | Belirli yapılandırma dosyasını container içine yerleştirme. |
| Backup | T | Veritabanı veya volume verisinin geri yüklenebilir kopyası. |
| Database Backup | T | Dokploy veritabanı servisinin zamanlı veya manuel yedeği. |
| Backup Schedule | O | Yedeğin hangi periyotta otomatik alınacağını belirler. |
| Backup Destination | O | S3 uyumlu storage veya sunucu yolu gibi yedek hedefi. |
| Restore | T | Yedekten veritabanı veya uygulama verisini geri yükleme. |
| Retention | O | Kaç yedeğin veya kaç günlük yedeğin saklanacağı. |
| Database Connection String | T | Host, port, kullanıcı, parola ve veritabanı adını içeren bağlantı adresi. |
| Internal Hostname | T | Dokploy/Docker ağı içinde database servisine adıyla erişim. |
| External Port | O | Veritabanını Docker host dışından erişilebilir yapan yayınlanmış port. |
| Private Database | T | Yalnızca aynı internal network'teki uygulamaların erişebildiği veritabanı. |
| Database User | T | Veritabanına giriş yapan ve belirli yetkilere sahip kullanıcı. |
| Database Password | T | Veritabanı kullanıcısının gizli kimlik bilgisi. |
| Monitoring | T | Uygulama ve sunucu CPU, RAM, disk ve durum bilgilerinin izlenmesi. |
| Server Metrics | T | Sunucunun işlemci, bellek, disk ve ağ kullanım ölçümleri. |
| Container Metrics | T | Belirli container'ın kaynak tüketim ölçümleri. |
| Disk Usage | T | Image, volume, log ve container'ların kullandığı disk miktarı. |
| Docker Cleanup | O | Kullanılmayan image, container, network ve build cache'ini kontrollü temizleme. |
| Prune | O | Referans edilmeyen Docker kaynaklarını silen bakım işlemi. |
| Scheduled Job | O | Belirli aralıkta veya cron ifadesinde çalışan deployment görevi. |
| Cron Expression | T | Dakika, saat, gün, ay ve hafta gününe göre zamanlama ifadesi. |
| One-off Command | O | Uygulama container bağlamında migration veya seed gibi tek seferlik komut. |
| Database Migration | T | Yeni sürüm öncesi veya sırasında şema değişikliklerini uygulama. |
| Pre-deploy Command | O | Yeni sürüm trafik almadan önce çalıştırılacak migration veya hazırlık komutu. |
| Post-deploy Command | O | Deployment başarıyla tamamlandıktan sonra çalıştırılacak görev. |
| Custom Command | O | Container start veya bakım sürecinde kullanıcı tarafından tanımlanan komut. |
| Docker Registry | T | Application image'larının çekildiği veya yayınlandığı registry. |
| Registry Credential | T | Private registry erişimi için kullanıcı ve token bilgisi. |
| Custom Image | T | Repository build etmek yerine registry'deki hazır image'ı çalıştırma. |
| Image Tag | T | Dağıtılacak image sürümünü belirler. |
| Immutable Tag Strategy | O | latest yerine commit SHA veya sürüm gibi değişmeyen tag kullanma. |
| Git SHA | O | Deployment'ı belirli commit ile izlenebilir yapan kaynak kimliği. |
| Preview Environment | O | Branch veya pull request için geçici dağıtım ortamı. |
| Staging Environment | T | Canlı öncesi production benzeri test dağıtımı. |
| Production Environment | T | Gerçek kullanıcı trafiği alan canlı dağıtım. |
| Multi-tenancy | O | Aynı Dokploy panelinde farklı kullanıcı/ekiplerin kaynaklarını izole yönetme. |
| Access Control | T | Kullanıcının hangi proje, server ve deployment işlemlerine erişebileceği. |
| Team Member | T | Dokploy çalışma alanına eklenen kullanıcı. |
| Role | T | Yönetim ve deployment izinlerini gruplayan yetki. |
| Audit Log | O | Kimin ne zaman hangi dağıtım veya ayar değişikliğini yaptığını kaydeder. |
| Notification | T | Deployment başarı, hata veya sunucu olayı bildirimi. |
| Webhook Notification | O | Dokploy olaylarını Slack, Discord veya başka HTTP endpoint'e gönderme. |
| SMTP | T | Sistem e-posta bildirimleri için kullanılan posta gönderim ayarı. |
| Troubleshooting | T | Build, routing, TLS, network ve container sorunlarını sistematik teşhis etme. |
| 502 Bad Gateway | T | Reverse proxy'nin uygulama container'ından geçerli yanıt alamaması. |
| Port Mismatch | T | Proxy'nin yönlendirdiği port ile uygulamanın dinlediği portun farklı olması. |
| Crash Loop | O | Container'ın başlatılıp kısa sürede sürekli çökerek yeniden başlaması. |
| Healthcheck Failure | O | Uygulama çalışsa bile sağlık kontrolü başarısız olduğu için hazır sayılmaması. |
| DNS Propagation | T | Yeni domain kaydının DNS resolver'lara yayılması için geçen süre. |
| TLS Challenge Failure | O | Let's Encrypt'in domain doğrulamasını tamamlayamaması. |
| Database Connection Error | T | Host, credential, network veya limit nedeniyle veritabanına bağlanamama. |
| Permission Error | T | Volume veya dosya sahibinin container kullanıcısıyla uyuşmaması. |
| Out of Memory | O | Container veya host belleğinin yetersiz kalması. |
| Disk Full | T | Log, image, yedek veya volume nedeniyle disk alanının tükenmesi. |
| Log Growth | O | Rotation uygulanmayan container loglarının sürekli büyümesi. |
| Safe Deployment Checklist | T | Yedek, migration, healthcheck, smoke test ve rollback hazırlığını doğrulayan liste. |
Bölüm uygulamaları
Bu bölümü bitirmeden önce şunları deneyin veya açıklayın.
- Git push ile otomatik deploy edilen bir Node.js uygulamasının Dokploy ayarlarını baştan sona belgeleyin.
- Application, PostgreSQL ve Redis servislerinin yalnızca internal network üzerinden iletişim kuracağı yapı tasarlayın.
- 502, crash loop, disk full ve migration failure için teşhis sırası ve geri dönüş planı hazırlayın.