CONTAINER APPS · REHBER
Git'ten Deploy
Bize docker-compose.yml içeren bir git deposu gösterin. Depoyu klonlar, her servisin imajını kendi altyapımızda derler — container registry'ye ihtiyacınız yok — ve tüm stack'i birbirine bağlı şekilde CDN.com.tr yönetilen konteyner platformunda yayına alırız. "Depom" ile "production'da çalışıyor" arasındaki en kısa yol budur.
docker-compose.yml içeren bir depo — ya da yalnızca bir Dockerfile. build: bölümü olan servisler Dockerfile'larından derlenir; public bir image: referans eden servisler (veritabanları, cache'ler, kuyruklar) olduğu gibi kullanılır ve yönetilen eklenti ya da uygulama olarak bağlanır. Compose dosyası olmayan ama Dockerfile'ı olan bir depo (kökte ya da verdiğiniz compose yolunun klasöründe), o Dockerfile'dan derlenen tek bir uygulama olarak yayına alınır ve EXPOSE satırındaki portu dinler (satır yoksa 8080). Hepsi bu — registry hesabı, imaj push'u, CI kurulumu gerekmez.
1 · "Git'ten Deploy"u açın
CDN hesabınızda Platformlar → Container Apps'ı açın, App creation'ı genişletin ve (Import from Docker Compose'un yanındaki) Deploy from Git'e tıklayın.
2 · Deponuzu girin
- Depo URL'i —
https://klon adresi, örn.https://github.com/kurumunuz/uygulamaniz.git. - Branch — deploy edilecek branch (varsayılan
main). - Compose dosyası — compose dosyasının depo içindeki yolu (varsayılan
docker-compose.yml). Build context'leri bu dosyaya göre çözülür; alt klasörde tutulan compose da sorunsuz çalışır. Orada compose dosyası yoksa o klasördeki ya da depo kökündeki Dockerfile kullanılır.
3 · Private depolar ve erişim
GitHub (önerilen): "Connect GitHub"a tıklayın. Tek tıklık GitHub App kurulumu ile depolarınızı açılır listeden seçersiniz — token üretmek, kopyalamak, döndürmek yok; otomatik deploy webhook'larını da (adım 5) bu bağlantı çalıştırır. App'in hangi depoları görebileceğini siz seçersiniz ve GitHub üzerinden istediğiniz an iptal edebilirsiniz.
Alternatif olarak — ya da GitLab için — This is a private repository kutusunu işaretleyip bir erişim token'ı yapıştırın. Token'a yalnızca gereken en az yetkiyi verin:
- GitHub — yalnızca bu depoya, Contents: Read-only iznine sahip fine-grained bir Personal Access Token.
- GitLab — read_repository kapsamında bir proje ya da kişisel erişim token'ı.
Yapıştırılan token yalnızca derleme sırasında deponuzu klonlamak için kullanılır. Derleme süresince yalnızca yazılır olarak saklanır; asla geri gösterilmez ve yeniden kullanılmaz — istediğiniz an iptal edebilirsiniz.
4 · Derle ve yayına al
Build & deploy'a tıklayın. Canlı ilerleme çubuğu her adımı gösterir:
- Compose okunuyor — deponuzu klonlayıp compose dosyasını çözümleriz.
- <servis> derleniyor — her
build:servisinin imajı, izole bir derleyicide Dockerfile'ından derlenir ve private registry'mize gönderilir. - Yayına alınıyor — her servis bir container app olur; tıpkı
docker-composegibi servis adıyla birbirine bağlanır, veritabanları/cache'ler eklenir.
Bittiğinde web'e bakan servisler anında bir <uid>.cdn.com.tr alt alan adında otomatik yayınlanır (kendi alan adınızı dilediğiniz zaman bağlayabilirsiniz) — çalıştıklarını görmek için Your apps'ı açın.
5 · Bağlı kalın — otomatik deploy ve dağıtım hattı
Deploy etmeden önce "Keep connected — auto-deploy on every push to this branch" kutusunu işaretleyin. Artık bu branch'e her push otomatik olarak yeniden derleyip yayına alır — ve Container Apps'te Dağıtım hattı kartı belirir:
- Kartta Test ortamını açtığınızda push'lar production yerine (kendi test URL'inde) bir Staging test kopyası deploy eder — production yalnızca Yayına al'a tıkladığınızda değişir; tek tıkla geri alınır.
- Bağlı bir depoyu çalıştırmanın önerilen yolu budur: "her commit production'ı yeniden deploy ediyor" derdi biter.
Uçtan uca anlatım: Dağıtım hattı — push → Test Ortamı, Yayına al → Production.
Nasıl çalışır (ve neden güvenli)
- İmajlarınızı biz derleriz — Dockerfile'larınızdan, registry hesabı gerekmeden. Multi-stage build'ler,
target:vebuild.argsdesteklenir;build.argsiçindeki${VAR}uygulamanın ortam değişkenlerinden doldurulur ve tümNEXT_PUBLIC_*değişkenleri build'e geçirilir, böylece bir Next.js uygulaması onlarınext buildsırasında alır. Secret'lar build'e asla geçirilmez — build argümanları imajın içinde kalır. - İzole derleme ve çalıştırma. Hem derleme hem çalışan konteynerleriniz, diğer müşterilerden ve host'tan yalıtılmış sertleştirilmiş gVisor sandbox'ında koşar.
- Servis keşfi — hesabınızdaki uygulamalar, tıpkı compose'daki gibi birbirine servis adıyla erişir. Veritabanları, Redis ve NATS yönetilen eklenti olarak sağlanır.
- Güvenle yayınlayın. Canlıya almadan önce kopyayı kendi URL'inde test etmek için bunu Blue/Green preprod ile birleştirin.