“CDN üzerinde Docker” ne demek
Klasik haliyle bir CDN, zaten çalıştırdığınız bir web sitesinin önünde durur: edge, statik origin’inizi önbelleğe alır ve hızlandırır. Bu Pull modudur ve bir yerde bir sunucunuz olduğunda harikadır. Ama elinizde olan şey bir Docker imajıysa — bir backend API, bir web uygulaması, bir worker — o konteyneri gerçekten çalıştırmak için yine bir makineye ihtiyacınız olurdu. Managed container platformu tam olarak bu boşluğu doldurur.
cdn.com.tr’de Docker imajının kendisini yayınlarsınız. Platform konteynerinizi bir managed container app olarak çalıştırır ve CDN edge’in arkasına koyar; böylece laptop’ınızda docker run ile çalışan aynı imaj artık otomatik HTTPS, edge önbelleği ve önünde bir WAF ile gerçek bir alan adında sunulur — siz bir VM kurmadan, Docker yüklemeden, TLS ayarlamadan ya da bir reverse proxy dikmeden. Siz bir imaj ve bir port getirirsiniz; platform onu çalıştırmayı ve küresel olarak sunmayı üstlenir. İnsanların “bir CDN üzerinde Docker” ya da managed yolla yapılan “Docker hosting” derken kastettiği budur: konteyner origin’dir ve onu edge dağıtır.
A Yolu — panelden yayınlayın (CLI yok)
Kodsuz yol tamamen cdn.com.tr Yönetim Paneli’nde işler. CDN Hosting / Platformlar altında Managed Container’ı seçin ve imajınızdan bir app oluşturun. Bir registry imajı ve tag’ine yöneltirsiniz (örneğin registry.example.com/acme/app:1.0.0), konteynerinizin dinlediği portu (diyelim 8080) belirtir ve platformun konteynerin gerçekten hazır olduğunu bilmesi için bir sağlık kontrolü (health check) yolu eklersiniz (/health gibi bir HTTP yolu, bir TCP kontrolü ya da hiçbiri). Sunulmasını istediğiniz özel alan adını ekleyin; imaj özel bir registry’de duruyorsa daha önce kaydettiğiniz registry kimlik bilgilerini ekleyin.
Sonra Deploy’a basın. Platform imajı çeker, konteyneri başlatır, sağlık kontrolünün geçmesini bekler ve onu edge’in arkasında yayına alır. App’in Operasyonlar görünümünden deploy ilerlemesini izleyebilir, logları takip edebilir, durumu ve revizyonları görebilir, yeniden başlatabilir ya da geri alabilirsiniz — hiç terminale dokunmadan. Her şeyi görsel olarak görmek istediğinizde ya da tek bir konteyneri elle yayınlıyorsanız doğru yol budur.
B Yolu — cdnctl CLI
cdnctl, cdn.com.tr için operatör komut satırı aracıdır ve aynı platformu sürer. Bir kez giriş yapıp hesabınızı seçin ki her komut nerede çalışacağını bilsin: cdnctl login --email siz@ornek.com --password ... çalıştırın (ya da API token kullanıyorsanız cdnctl configure --endpoint https://cdn.com.tr --token <token>), ardından cdnctl accounts use <account_uuid>. İlk deploy’unuzdan önce cdnctl container preflight --account <uuid> hesabın hazır olup olmadığını kontrol eder.
Konteyneri iki adımda oluşturup yayınlayın. Önce tanımlayın: cdnctl container apps create --account <uuid> --name mobile-backend --image registry.example.com/acme/app --tag 1.0.0 --port 8080 --healthcheck /health --healthcheck-type http --domain api.example.com (özel bir imaj için --registry-credential <uuid> ekleyin; kalıcı bir volume gerekiyorsa --persistent-mount-path /app/data --persistent-storage-gb 5 ekleyin). Sonra gönderin: cdnctl container apps deploy --account <uuid> --app <app_uuid>. DNS kurmadan anlık bir önizleme için cdnctl container apps expose --account <uuid> --app <app_uuid>, hemen erişebileceğiniz değişmez bir <uid>.cdn.com.tr URL’si üretir.
Günlük operasyon da tümüyle burada: çıktı için apps logs --tail 100, hazırlık için apps status ve apps wait --status running --timeout 300, apps restart, duraklatmak (ya da ölçeklemek) için apps scale --replicas 0, app’i ve revizyonlarını görmek için apps show, bilinen iyi bir sürüme dönmek için apps rollback --revision <uuid>, bir şey ters gittiğinde apps diagnose ve yapılandırmayı değiştirmek için apps update ... --env-json '{"APP_URL":"https://api.example.com"}'. Özel imajlar için kimlik bilgisini bir kez oluşturun: cdnctl container registry-credentials create --account <uuid> --name docker --registry-url https://index.docker.io/v1/ --username <user> --password <token> ve app’i oluştururken referans verin.
Çok servisli yığınlar, add-on’lar, işler ve veri
Gerçek uygulamalar nadiren tek bir konteynerdir. Yığınınızı zaten docker-compose ile tanımlıyorsanız, tamamını yayınlayabilirsiniz: cdnctl container compose preview --account <uuid> --file docker-compose.yml neyin oluşturulacağını gösterir ve cdnctl container compose apply --account <uuid> --file docker-compose.yml --yes çok servisli yığını yayınlar. Compose dosyanız platformda managed container app’lere dönüşür.
Uygulamanızın bağımlı olduğu parçalar için, onları kendiniz çalıştırmak yerine managed add-on’lar bağlayın: cdnctl container addons enable-redis, enable-postgres, enable-database ya da enable-nats servisi hazırlar ve bağlantı bilgilerini uygulamanıza environment değişkenleri olarak enjekte eder (adlarını kontrol etmek için --env-prefix kullanın). Arka plan ve zamanlanmış işler jobs ile karşılanır: cdnctl container jobs create --account <uuid> --app <app_uuid> --name sync --schedule "*/30 * * * *" --method POST --path "/run" uygulamanızı bir zamanlamayla çağıran cron tarzı bir iş kaydeder ve jobs run [--wait] onu talep üzerine tetikler. Durum yüklemek için de cdnctl container imports database --file dump.sql.gz bir SQL dump yükler, cdnctl container imports files --file data.tar.gz --target-path /app/data ise dosyaları kalıcı bir volume’a açar.
CDN edge üzerinden sunum
Konteynerinizi çıplak bir VM yerine burada çalıştırmanın esas nedeni onun önünde duran şeydir. Yayınlandıktan sonra uygulamanız, eklediğiniz özel alan adında, CDN edge üzerinden erişilebilir olur. TLS otomatiktir — satın alacağınız, kuracağınız ya da yenileyeceğiniz bir sertifika olmadan HTTPS alırsınız — ve önbelleklenebilir yanıtlar ziyaretçilerinize yakın edge’de önbelleğe alınır; böylece konteyneriniz daha az iş yapar ve kullanıcılar daha hızlı yanıt alır. Önde duran bir WAF, kötü niyetli trafiği filtreler ve saldırıları konteynerinize ulaşmadan soğurur.
Teste başlamak için özel bir alan adına ihtiyacınız yok. cdnctl container apps expose (ya da paneldeki aynı işlem) çalışan konteynerinizi anında sunan değişmez bir <uid>.cdn.com.tr URL’si verir — bir önizleme, bir demo ya da DNS hazır olmadan bir mobil istemciyi bir backend’e bağlamak için ideal. Üretime hazır olduğunuzda gerçek alan adınızı app’e yöneltirsiniz ve aynı otomatik HTTPS ile edge korumasıyla o alan adında sunulur.
Git’ten deploy — CI/CD ve sıfır kesintili promote
Süregelen bir projede genellikle her seferinde elle bir deploy komutu çalıştırmak istemezsiniz. Panelden bir repo bağlayın ve push’lar otomatik deploy edebilir: push ettiğinizde platform otomatik olarak build alır ve yeniden yayınlar, dolayısıyla bir değişikliği göndermek yalnızca git push’tur. Bu, CDN üzerindeki konteynerler için CI/CD yoludur.
Üretimi güvende tutmak için deploy’lar bir staging → production pipeline’ından akar. Bir push önce Staging ortamınızı yeniden yayınlar; yeni sürümü bir önizleme URL’sinde kontrol edebilirsiniz; doğru göründüğünde tek bir manuel Promote o build’i anında Production’a takas eder. Promote, zaten build alınmış, zaten ısınmış bir sürümün anlık takası olduğundan üretim sıfır kesintiyle değişir — yeniden build yok, ziyaretçileriniz için soğuk başlangıç yok. cdnctl aynı akışa bir CI pipeline’ından da oturur: bir token’la kimlik doğrulayın, ardından app’i bir build adımı olarak create/deploy edin; böylece mevcut GitHub ya da GitLab CI’nız da deploy’ları sürebilir.
İnsanlar CDN üzerinde neleri Docker konteyner olarak çalıştırıyor
Node, Python, Go, PHP ya da Java servisinizi bir konteyner olarak yayınlayın ve önünde otomatik HTTPS ile bir WAF olan gerçek bir alan adında sunun.
Mevcut docker-compose dosyanızı getirin ve çok servisli yığının tamamını, env değişkeni olarak bağlanan managed Redis, Postgres ya da NATS ile yayınlayın.
Bir backend gönderin, istemcinizi test etmek için anlık bir <uid>.cdn.com.tr URL’si açın, ardından özel alan adınızda sıfır kesintiyle üretime promote edin.
CDN üzerinde Docker SSS
Bir CDN üzerinde Docker konteyner çalıştırabilir miyim?
Evet. cdn.com.tr managed platformunda Docker imajınızı bir managed container app olarak yayınlarsınız ve o, CDN edge üzerinden sunulur — özel alan adı, otomatik HTTPS ve önünde önbellek ile WAF ile. Sunucu kurmaz ya da bakımını yapmazsınız; bir imaj ve bir port getirirsiniz, platform onu çalıştırır.
Bir Docker konteyner nasıl yayınlarım — panel mi komut satırı mı?
İkisi de aynı platformu sürer. İmajdan görsel olarak bir app oluşturup Deploy etmek için Yönetim Paneli’ni (CDN Hosting / Platformlar → Managed Container) kullanın ya da cdnctl CLI’yi kullanın: cdnctl container apps create ... ardından cdnctl container apps deploy. CLI ayrıca CI/CD’ye de oturur.
Konteynerimi önizlemek için özel bir alan adına ihtiyacım var mı?
Hayır. cdnctl container apps expose çalıştırın (ya da paneldeki aynı işlem) ve çalışan konteynerinizi hemen sunan değişmez bir <uid>.cdn.com.tr URL’si alın — DNS kurulumu gerekmez. Üretime hazır olduğunuzda özel alan adınızı ekleyin.
Bütün bir docker-compose yığınını yayınlayabilir miyim?
Evet. cdnctl container compose preview neyin oluşturulacağını gösterir ve cdnctl container compose apply --file docker-compose.yml --yes çok servisli yığını yayınlar. Ayrıca managed add-on’ları — Redis, Postgres ya da NATS — bağlayabilirsiniz; böylece bağlantı bilgileri uygulamanıza environment değişkeni olarak gelir.
Git’ten deploy nasıl işler ve üretim güvende mi?
Bir repo bağlayın ve push’lar otomatik deploy edebilir. Deploy’lar bir staging → production pipeline’ından akar: bir push Staging’i yeniden yayınlar ve tek bir manuel Promote build’i anında Production’a takas eder. Promote, zaten build alınmış bir sürümün anlık takası olduğundan üretim sıfır kesintiyle değişir.