Docker Compose ile VPS/VDS Üzerinde Web Uygulaması Yayınlama Rehberi

Docker Compose ile VPS/VDS Üzerinde Web Uygulaması Yayınlama Rehberi - Corelux
Paylaş:

Docker Compose ile VPS/VDS Üzerinde Web Uygulaması Yayınlama Rehberi

Son Güncelleme: Eylül 2026

Docker Compose, birden fazla servis kullanan web uygulamalarını tek bir yapılandırma dosyasıyla yönetmeyi sağlayan pratik bir konteyner orkestrasyon aracıdır. Özellikle VPS ve VDS sunucularda Node.js, Laravel, WordPress, PostgreSQL, MySQL, Redis, Nginx ve benzeri servisleri düzenli, taşınabilir ve güvenli şekilde yayınlamak için oldukça kullanışlıdır.

Bu rehberde Docker Compose mantığını, sunucu hazırlığını, örnek proje yapısını, güvenlik ayarlarını, ters proxy kullanımını, yedekleme yaklaşımını ve canlı ortam için dikkat edilmesi gereken noktaları adım adım ele alacağız.

İçindekiler

Docker Compose Nedir?

Docker Compose, Docker konteynerlerini tek tek komutlarla yönetmek yerine, uygulamanın ihtiyaç duyduğu tüm servisleri bir compose.yaml veya docker-compose.yml dosyasında tanımlamayı sağlar. Bir web uygulaması çoğu zaman yalnızca tek bir yazılımdan oluşmaz. Örneğin bir Laravel projesinde PHP-FPM, Nginx, MySQL, Redis ve kuyruk işleyici; bir Node.js projesinde ise uygulama servisi, PostgreSQL, Redis ve ters proxy gerekebilir.

Docker Compose bu servislerin ağ bağlantılarını, kalıcı disk alanlarını, ortam değişkenlerini, portlarını ve başlatma kurallarını merkezi bir dosyada toplar. Böylece aynı uygulama yerel geliştirme ortamında, test sunucusunda ve canlı sanal sunucu üzerinde benzer mantıkla çalıştırılabilir.

Temel mantık basittir: Her servis ayrı bir konteyner olarak çalışır, fakat bu konteynerler aynı Compose projesi içinde birbirleriyle özel bir Docker ağı üzerinden iletişim kurar. Örneğin web uygulaması veritabanına genel IP adresiyle değil, db servis adıyla bağlanabilir. Bu yaklaşım hem düzenli hem de güvenli bir mimari oluşturur.

VPS/VDS İçin Neden Docker Compose Kullanılır?

VPS ve VDS sunucular, kullanıcıya kök erişimi ve yüksek yapılandırma özgürlüğü sunduğu için Docker tabanlı dağıtımlar açısından ideal ortamlardır. Paylaşımlı hosting üzerinde sistem seviyesinde konteyner yönetimi çoğu zaman mümkün değildir; ancak sanal sunucularda işletim sistemi, güvenlik duvarı, ağ, disk ve servis yapılandırmaları tamamen sizin kontrolünüzdedir.

Docker Compose kullanmanın en önemli avantajlarından biri taşınabilirlik sağlamasıdır. Uygulamanızı farklı bir sunucuya taşımak istediğinizde tüm servisleri baştan elle kurmak yerine proje dosyalarınızı, compose.yaml yapılandırmasını ve volume yedeklerinizi taşımanız yeterli olabilir. Bu, özellikle ajanslar, SaaS girişimleri, e-ticaret projeleri ve çoklu uygulama barındıran ekipler için büyük kolaylık sağlar.

Kriter Geleneksel Kurulum Docker Compose Kurulumu
Servis Yönetimi Her servis işletim sistemine ayrı kurulur. Servisler tek dosyada tanımlanır ve birlikte yönetilir.
Taşınabilirlik Sunucuya özel bağımlılıklar oluşabilir. Aynı yapı farklı sunucularda daha kolay çalıştırılır.
İzolasyon Servisler aynı sistem ortamını paylaşır. Her servis ayrı konteynerde izole çalışır.
Güncelleme Paket yöneticisi ve manuel işlemler gerekir. İmaj güncelleme ve yeniden başlatma ile yönetilebilir.
Geri Alma Eski sürüme dönüş daha zahmetlidir. Önceki imaj etiketiyle geri dönüş kolaylaşır.

Corelux üzerinde ölçeklenebilir bir altyapı kurmak isteyen kullanıcılar, ihtiyaçlarına göre Sanal Sunucu, Türkiye VDS Sunucu veya daha yüksek kaynak gereksinimleri için Kiralık Sunucu seçeneklerini değerlendirebilir.

Sunucu Hazırlığı

Docker Compose kullanmadan önce sunucunun temel güvenlik ve sistem hazırlıklarının yapılması gerekir. Bu aşamada amaç, yalnızca Docker kurmak değil, aynı zamanda canlı ortamda sürdürülebilir ve güvenli bir temel oluşturmaktır. Özellikle internete açık uygulamalarda gereksiz portların kapatılması, güncel paketlerin kullanılması ve erişimlerin sınırlandırılması kritik öneme sahiptir.

İşletim Sistemi Seçimi

Docker için en yaygın tercih edilen işletim sistemleri arasında Ubuntu, Debian, AlmaLinux ve Rocky Linux bulunur. Yeni başlayanlar için Ubuntu LTS sürümleri çoğu dokümantasyonla uyumlu olduğu için pratik bir seçenektir. Ancak üretim ortamında asıl önemli olan, işletim sisteminin güncel, desteklenen ve güvenlik yamalarını düzenli alan bir sürüm olmasıdır.

Temel Paket Güncellemesi

Sunucu ilk kez teslim alındığında paket listesi güncellenmeli ve mevcut güvenlik yamaları uygulanmalıdır. Ubuntu tabanlı bir sistemde şu komutlar kullanılabilir:

sudo apt update
sudo apt upgrade -y
sudo apt install -y ca-certificates curl gnupg ufw

Bu işlem, sistemdeki temel paketleri günceller ve güvenlik duvarı gibi yardımcı araçların hazır olmasını sağlar. Üretim ortamında güncelleme işlemlerinin plansız saatlerde yapılmaması, mümkünse bakım penceresi belirlenmesi tavsiye edilir.

Docker ve Compose Kurulumu

Docker kurulumu dağıtıma göre değişebilir. Genel yaklaşım, resmi paket deposunun eklenmesi ve Docker Engine ile Compose eklentisinin kurulmasıdır. Kurulum tamamlandıktan sonra sürüm kontrolü yapılmalıdır:

docker --version
docker compose version

Docker komutlarını sürekli sudo ile çalıştırmak istemiyorsanız kullanıcıyı docker grubuna ekleyebilirsiniz. Ancak bu grubun yüksek yetkilere sahip olduğunu unutmayın; yalnızca güvenilir kullanıcılara verilmelidir.

sudo usermod -aG docker kullanici_adi

Örnek Proje Yapısı

Docker Compose projelerinde düzenli klasör yapısı uzun vadede bakım kolaylığı sağlar. Her uygulamayı ayrı bir dizinde tutmak, yapılandırma dosyalarını ve kalıcı verileri ayırmak iyi bir pratiktir. Örneğin basit bir web uygulaması için aşağıdaki yapı kullanılabilir:

/opt/projeler/ornek-uygulama/
  compose.yaml
  .env
  app/
  nginx/
    default.conf
  backups/
  logs/
  • compose.yaml: Servislerin, ağların ve volume tanımlarının bulunduğu ana dosyadır.
  • .env: Veritabanı şifresi, uygulama ortamı ve gizli anahtarlar gibi değişkenleri tutar.
  • app/: Uygulama kaynak kodlarının veya Dockerfile dosyasının bulunduğu dizindir.
  • nginx/: Web sunucusu sanal host ve yönlendirme yapılandırmalarını içerir.
  • backups/: Veritabanı ve uygulama yedeklerinin tutulabileceği dizindir.
  • logs/: Uygulama veya ters proxy loglarının ayrıştırılmasına yardımcı olur.

Canlı ortamda proje dizinlerinin /opt altında tutulması yaygın bir tercihtir. Ancak asıl önemli olan, dosya izinlerinin doğru yapılandırılması ve gizli dosyaların web kök dizininden servis edilmemesidir.

Docker Compose Dosyası Nasıl Yazılır?

Bir Docker Compose dosyası, uygulamanın ihtiyaç duyduğu servisleri ve bu servislerin birbirleriyle ilişkisini tanımlar. Aşağıda Node.js, PostgreSQL ve Redis kullanan örnek bir yapılandırma yer almaktadır:

services:
  app:
    image: node:22-alpine
    working_dir: /usr/src/app
    command: sh -c "npm install && npm run start"
    volumes:
      - ./app:/usr/src/app
    environment:
      NODE_ENV: production
      DATABASE_URL: postgres://appuser:guclu_sifre@db:5432/appdb
      REDIS_URL: redis://redis:6379
    depends_on:
      - db
      - redis
    networks:
      - appnet

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: appdb
      POSTGRES_USER: appuser
      POSTGRES_PASSWORD: guclu_sifre
    volumes:
      - db_data:/var/lib/postgresql/data
    networks:
      - appnet

  redis:
    image: redis:7-alpine
    command: redis-server --appendonly yes
    volumes:
      - redis_data:/data
    networks:
      - appnet

networks:
  appnet:

volumes:
  db_data:
  redis_data:

Bu örnekte app, db ve redis servisleri aynı appnet ağı üzerinde çalışır. Uygulama, veritabanına db adıyla; Redis servisine ise redis adıyla erişebilir. Bu servis adları Docker tarafından dahili DNS (alan adı çözümleme) gibi çalıştırılır.

Ortam Değişkenleri

Parolaları ve gizli anahtarları doğrudan Compose dosyasına yazmak pratik görünse de güvenli değildir. Bunun yerine .env dosyası kullanılabilir. Örnek:

APP_ENV=production
POSTGRES_DB=appdb
POSTGRES_USER=appuser
POSTGRES_PASSWORD=CokGucluBirSifre123
REDIS_PASSWORD=RedisIcinGucluSifre

Bu dosya sürüm kontrol sistemine eklenmemelidir. Git kullanıyorsanız .gitignore içinde .env satırının yer aldığından emin olun.

Servisleri Başlatma

Proje dizinine girdikten sonra servisleri arka planda başlatmak için şu komut kullanılabilir:

docker compose up -d

Çalışan servisleri görmek için:

docker compose ps

Logları izlemek için:

docker compose logs -f

Servisleri durdurmak için:

docker compose down

docker compose down varsayılan olarak named volume verilerini silmez. Ancak -v parametresi kullanılırsa veriler silinebileceği için canlı ortamda çok dikkatli olunmalıdır.

Ters Proxy ve SSL Kullanımı

Canlı ortamda uygulama konteynerlerini doğrudan internete açmak yerine ters proxy kullanmak daha güvenli ve yönetilebilir bir yaklaşımdır. Ters proxy, dış dünyadan gelen HTTP ve HTTPS isteklerini karşılar, uygun konteynere yönlendirir ve SSL sonlandırma işlemini yapabilir.

Nginx, Caddy, Traefik ve benzeri çözümler Docker Compose ile birlikte kullanılabilir. Örneğin tek sunucuda birden fazla web uygulaması çalıştırıyorsanız, her uygulamanın ayrı portunu dış dünyaya açmak yerine yalnızca 80 ve 443 portlarını ters proxy üzerinde açmak daha temiz bir mimari sağlar.

SSL Sertifikası Neden Önemlidir?

SSL sertifikası, kullanıcı ile sunucu arasındaki veri trafiğini şifreler. Giriş formları, ödeme sayfaları, yönetim panelleri, API istekleri ve çerez tabanlı oturumlar SSL olmadan ciddi risk taşır. Kurumsal web siteleri ve uygulamalar için güvenli bağlantı yalnızca teknik değil, aynı zamanda marka güveni açısından da önemlidir.

Corelux üzerinden web projenize uygun SSL Sertifikası çözümlerini değerlendirebilir, Docker Compose ile çalışan uygulamanızın HTTPS üzerinden güvenli yayın yapmasını sağlayabilirsiniz.

Port Yayınlama Mantığı

Docker Compose dosyasında ports kullanmak, ilgili konteyner portunu sunucunun dış ağına açar. Ancak veritabanı, Redis, kuyruk servisi gibi dahili bileşenler dış dünyaya açılmamalıdır. Genellikle sadece ters proxy servisi 80 ve 443 portlarıyla internete açılır. Uygulama servisi ise yalnızca Docker ağı içinde erişilebilir kalır.

Güvenlik Önlemleri

Docker Compose, doğru yapılandırıldığında güvenli bir çalışma düzeni sağlar; ancak yanlış port açma, zayıf parolalar, güncellenmeyen imajlar ve geniş yetkili konteynerler ciddi risk oluşturabilir. Bu nedenle üretim ortamında güvenlik kontrolleri kurulumun ayrılmaz parçası olmalıdır.

  • Gereksiz portları kapatın: Sadece SSH, HTTP ve HTTPS gibi gerçekten ihtiyaç duyulan portlar açık kalmalıdır.
  • Veritabanını internete açmayın: PostgreSQL, MySQL, MariaDB ve Redis servisleri yalnızca dahili Docker ağı üzerinden erişilebilir olmalıdır.
  • Güçlü parolalar kullanın: admin, password, 123456 gibi tahmin edilebilir değerlerden kaçının.
  • İmaj etiketlerini kontrol edin: latest etiketi yerine mümkün olduğunca belirli sürüm etiketleri kullanın.
  • Root yetkisini sınırlayın: Uygulama konteynerleri mümkünse root olmayan kullanıcıyla çalıştırılmalıdır.
  • Gizli bilgileri koruyun: .env dosyalarını herkese açık depolara yüklemeyin.
  • Dosya izinlerini düzenleyin: Uygulama dizinlerinde gereksiz yazma izni vermeyin.
  • Güncelleme planı oluşturun: İşletim sistemi, Docker ve konteyner imajları düzenli takip edilmelidir.

UFW ile Basit Güvenlik Duvarı

Ubuntu üzerinde temel güvenlik duvarı yapılandırması için aşağıdaki örnek kullanılabilir:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

SSH portunu değiştirdiyseniz 22/tcp yerine kendi portunuzu tanımlamanız gerekir. Ayrıca güvenlik duvarını etkinleştirmeden önce aktif SSH bağlantınızın kesilmeyeceğinden emin olun.

Yedekleme ve Güncelleme Stratejisi

Docker Compose kullanılan ortamlarda yedekleme yalnızca proje klasörünü kopyalamaktan ibaret değildir. Uygulama dosyaları, veritabanı dump dosyaları, named volume verileri, .env dosyası, ters proxy yapılandırması ve SSL dosyaları yedekleme kapsamına alınmalıdır. Özellikle veritabanı volume dizinini doğrudan kopyalamak yerine uygulamaya uygun dump yöntemi kullanmak daha sağlıklıdır.

PostgreSQL Yedeği Alma

PostgreSQL servisi için örnek yedekleme komutu:

docker compose exec db pg_dump -U appuser appdb > backups/appdb-$(date +%F).sql

Bu komut, veritabanı içeriğini SQL formatında backups dizinine kaydeder. Canlı sistemlerde yedeklerin otomatik alınması, farklı bir lokasyona kopyalanması ve düzenli geri yükleme testi yapılması önerilir.

Güncelleme Öncesi Kontrol Listesi

  • Yedek alın: Veritabanı ve uygulama dosyaları güncellemeden önce yedeklenmelidir.
  • Sürüm notlarını inceleyin: Yeni imaj sürümünde kırıcı değişiklik olup olmadığı kontrol edilmelidir.
  • Bakım zamanı belirleyin: Trafiğin düşük olduğu saatlerde işlem yapılmalıdır.
  • Geri dönüş planı hazırlayın: Eski imaj etiketi ve önceki yapılandırma saklanmalıdır.

İmajları güncellemek için:

docker compose pull
docker compose up -d

Kullanılmayan imajları temizlemek için dikkatli şekilde şu komut çalıştırılabilir:

docker image prune

Kurumsal projelerde verinin sürekliliği kritik olduğu için Corelux Yedekleme Hizmeti ile ek koruma katmanı oluşturmak değerlendirilebilir.

Performans ve İzleme İpuçları

Docker Compose tek başına performansı otomatik olarak artırmaz; ancak servislerin daha düzenli çalışmasını sağlayarak kaynak yönetimini kolaylaştırır. Performans için CPU, RAM, disk I/O ve ağ kullanımı birlikte izlenmelidir. Özellikle düşük kaynaklı VPS paketlerinde aynı sunucuda çok sayıda servis çalıştırmak darboğaz oluşturabilir.

Kaynak Kullanımını Görme

Çalışan konteynerlerin anlık kaynak kullanımını izlemek için şu komut kullanılabilir:

docker stats

Bu çıktı CPU, bellek, ağ ve disk I/O hakkında hızlı fikir verir. Bir konteyner sürekli yüksek CPU tüketiyorsa uygulama kodu, veritabanı sorguları, önbellek mekanizması veya yanlış yapılandırılmış worker süreçleri incelenmelidir.

Log Yönetimi

Docker konteynerleri çok yoğun log üretebilir. Logların sınırsız büyümesi disk alanını tüketebilir. Compose dosyasında log sürücüsü için boyut sınırı tanımlamak iyi bir pratiktir:

services:
  app:
    image: node:22-alpine
    logging:
      driver: json-file
      options:
        max-size: "20m"
        max-file: "5"

Bu ayar, tek log dosyasının 20 MB ile sınırlanmasını ve en fazla 5 dosya tutulmasını sağlar. Böylece disk doluluk riskini azaltır.

Sunucu Kaynağı Seçimi

Basit bir web sitesi için düşük kaynaklı bir sanal sunucu yeterli olabilirken, yoğun API trafiği, gerçek zamanlı işlemler, büyük veritabanı veya çoklu uygulama barındırma senaryolarında daha güçlü CPU ve RAM gerekir. Başlangıç için Türkiye VPS Sunucu tercih edilebilir; daha yüksek izolasyon ve performans beklentisinde Türkiye VDS Sunucu daha uygun olabilir.

Pratik Kullanım Senaryoları

Docker Compose, farklı web teknolojilerini aynı mantıkla yönetebildiği için çok geniş kullanım alanına sahiptir. Aşağıdaki senaryolar, gerçek projelerde sık karşılaşılan örneklerdir.

Laravel Uygulaması Yayınlama

Laravel projelerinde PHP-FPM, Nginx, MySQL veya PostgreSQL, Redis ve queue worker servisleri ayrı konteynerler olarak tanımlanabilir. Bu yapı, uygulama ile kuyruk işlemlerini birbirinden ayırır. Yoğun e-posta gönderimi, bildirim veya arka plan işlem gerektiren projelerde worker konteynerinin ayrı yönetilmesi büyük avantaj sağlar.

WordPress ve MySQL Kurulumu

WordPress projelerinde uygulama dosyaları bir volume üzerinde tutulabilir, MySQL veya MariaDB ayrı servis olarak çalıştırılabilir. Ancak canlı ortamda WordPress dosya izinleri, eklenti güvenliği ve düzenli yedekleme özellikle önemlidir. Sadece Compose dosyası hazırlamak yeterli değildir; yönetim paneli güvenliği de düşünülmelidir.

Node.js API ve Redis Önbellek

Node.js tabanlı API servislerinde Redis, oturum yönetimi ve önbellek için kullanılabilir. API servisi dış dünyaya ters proxy üzerinden açılırken Redis yalnızca dahili ağda kalmalıdır. Böylece performans kazanımı sağlanırken güvenlik riski azaltılır.

n8n veya Otomasyon Araçları

Otomasyon ve entegrasyon araçları, veritabanı ve dosya depolama ihtiyaçları nedeniyle Docker Compose ile kolayca yönetilebilir. Hazır uygulama sunucusu yaklaşımı isterseniz Corelux N8N Hosting ve Coolify Hosting çözümlerini de inceleyebilirsiniz.

Tek Sunucuda Çoklu Proje

Bir VDS üzerinde birden fazla web uygulaması çalıştırılabilir. Bu durumda her proje ayrı Compose dosyasıyla yönetilir, ön tarafta ortak bir ters proxy kullanılır ve alan adlarına göre ilgili uygulamaya yönlendirme yapılır. Bu model, küçük ajanslar ve geliştirici ekipleri için maliyet avantajı sağlayabilir. Ancak kaynak planlaması iyi yapılmalı, her proje için yedekleme ve izleme düzeni oluşturulmalıdır.

Sıkça Sorulan Sorular

Docker Compose ile canlı ortamda uygulama çalıştırmak güvenli mi?

Evet, doğru yapılandırıldığında güvenlidir. Ancak veritabanı portlarını internete açmamak, güçlü parolalar kullanmak, imajları güncel tutmak, güvenlik duvarı yapılandırmak ve gizli dosyaları korumak gerekir. Docker Compose güvenliği otomatik sağlamaz; güvenli mimari sizin yapılandırmanıza bağlıdır.

VPS mi VDS mi Docker Compose için daha uygundur?

Küçük ve orta ölçekli projeler için VPS yeterli olabilir. Daha yüksek performans, daha iyi kaynak izolasyonu ve yoğun trafik beklentisi varsa VDS daha uygun bir seçimdir. Veritabanı, Redis, worker ve birden fazla uygulama aynı sunucuda çalışacaksa kaynakların dikkatli planlanması gerekir.

Docker Compose ile veritabanı çalıştırmak mantıklı mı?

Evet, özellikle küçük ve orta ölçekli projelerde veritabanını Compose içinde çalıştırmak yaygın bir yaklaşımdır. Ancak kalıcı volume kullanılmalı, düzenli yedek alınmalı ve veritabanı dış ağa açılmamalıdır. Kritik kurumsal projelerde ayrı veritabanı sunucusu veya yönetilen veritabanı mimarisi de değerlendirilebilir.

latest imaj etiketi kullanılmalı mı?

Canlı ortamda genellikle önerilmez. latest etiketi beklenmeyen sürüm değişikliklerine yol açabilir. Bunun yerine postgres:16-alpine veya redis:7-alpine gibi belirli sürüm etiketleri kullanmak daha kontrollü güncelleme sağlar.

Docker Compose ile SSL nasıl yönetilir?

SSL genellikle ters proxy katmanında yönetilir. Nginx, Caddy veya Traefik gibi servisler 80 ve 443 portlarını dinler, sertifikayı kullanır ve trafiği ilgili uygulama konteynerine yönlendirir. Böylece uygulama konteynerleri dahili ağda kalırken kullanıcılar HTTPS üzerinden güvenli bağlantı kurar.

Compose dosyası silinirse veriler kaybolur mu?

Compose dosyasının silinmesi tek başına volume verilerini silmez; ancak servisleri tekrar oluşturmak zorlaşır. Asıl risk docker compose down -v gibi volume silen komutlardır. Bu nedenle Compose dosyası, .env dosyası ve yedekler güvenli şekilde saklanmalıdır.

Tek sunucuda kaç Docker Compose projesi çalıştırılabilir?

Bu sayı sunucunun CPU, RAM, disk performansı, ağ trafiği ve projelerin kaynak tüketimine bağlıdır. Teknik olarak birçok proje çalıştırılabilir; ancak her proje için kaynak izleme, log yönetimi, yedekleme ve güvenlik planı yapılmalıdır. Gerektiğinde projeleri farklı sunuculara ayırmak daha sağlıklı olur.

Sonuç

Docker Compose, VPS ve VDS sunucularda modern web uygulamalarını düzenli, taşınabilir ve yönetilebilir şekilde yayınlamak için güçlü bir yöntemdir. Tek bir yapılandırma dosyasıyla uygulama, veritabanı, önbellek, worker ve ters proxy gibi bileşenleri birlikte yönetebilir; güncelleme, taşıma ve bakım süreçlerini daha kontrollü hale getirebilirsiniz.

Başarılı bir canlı ortam için yalnızca Compose dosyası yazmak yeterli değildir. Sunucu güvenliği, SSL, yedekleme, log yönetimi, kaynak izleme, sürüm kontrolü ve geri dönüş planı da mimarinin parçası olmalıdır. Özellikle veritabanı ve gizli anahtarlar gibi kritik bileşenlerde düzenli yedekleme ve erişim sınırlandırması ihmal edilmemelidir.

Docker Compose tabanlı projelerinizi güvenilir altyapı üzerinde çalıştırmak için Corelux Sanal Sunucu, Bulut Sunucu, Linux Hosting ve Yedekleme Hizmeti seçeneklerini inceleyebilirsiniz. Doğru kaynak planlaması ve güvenli kurulumla, Docker Compose altyapısı hem geliştiriciler hem de işletmeler için esnek ve sürdürülebilir bir yayınlama modeli sunar.

Yazar

Boran BAR

Chat on WhatsApp