Compose Dosyası Yazma
Hizmetleri, ağları ve birimleri tanımlamak için `docker-compose.yml` YAML söz dizimini öğrenin.
Compose Dosyası Yazma, CoddyKit'te ücretsiz bir DevOps Bootcamp dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, DevOps Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DevOps Bootcamp kursu toplamda 4 dersten oluşur.
Compose Dosyası: Taslak
Docker Compose dosyaları yazmaya hoş geldiniz! docker-compose.yml dosyası, birden çok kapsayıcıdan oluşan Docker uygulamalarını tanımlayıp çalıştırmanız için taslağınızdır.
Uygulamanızın hizmetlerini, ağlarını ve birimlerini tek bir dosyada yapılandırmak için YAML söz dizimini kullanır.

YAML: Hızlı Bir Hatırlatma
Docker Compose dosyaları YAML (YAML Ain't Markup Language) ile yazılır. YAML, insanların kolayca okuyabildiği bir veri serileştirme standardıdır.
- Anahtar-Değer Çiftleri:
key: value - Listeler: Öğeler tire işaretiyle başlar (
- item) - Girinti: Yapıyı ve hiyerarşiyi tanımlamak için çok önemlidir. Sekme yerine boşluk kullanın!
`version` Anahtarı
Her docker-compose.yml dosyası bir version anahtarıyla başlar. Bu anahtar Compose dosyası biçiminin sürümünü belirtir ve Docker Compose'un dosyanızı nasıl yorumlayacağını anlamasına yardımcı olur.
Modern uygulamaların çoğu için '3.8' veya benzer bir '3.x' sürümü önerilir.
version: '3.8'`services` Tanımlama
services bölümü, uygulamanızı oluşturan ayrı kapsayıcıları (hizmetleri) tanımladığınız yerdir. Her hizmet, web sunucusu veya veritabanı gibi bir bileşeni temsil eder.
services altında, seçtiğiniz adla her hizmeti listelersiniz.
version: '3.8'
services:
web:
# Service configuration goes here
database:
# Another service's configurationHizmet `image` ve `ports` Anahtarları
Bir hizmet tanımının içinde image, kullanılacak Docker imajını belirtir (ör. nginx:latest). ports anahtarı, kapsayıcı bağlantı noktalarını ana makine bağlantı noktalarıyla eşleyerek dış erişime izin verir.
"80:80", ana makinenin 80 numaralı bağlantı noktasını kapsayıcının 80 numaralı bağlantı noktasına eşler.
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"Hizmet `volumes` Anahtarı
Bir hizmet içindeki volumes anahtarı, ana makinenizdeki yolları kapsayıcıya bağlamanıza veya kalıcı depolama için adlandırılmış birimler kullanmanıza olanak tanır.
Bu örnek, yerel ./app dizinini kapsayıcının içindeki /usr/src/app yoluna bağlar.
version: '3.8'
services:
app:
image: my-node-app
volumes:
- ./app:/usr/src/appHizmet `environment` Değişkenleri
Ortam değişkenlerini hizmetinizin kapsayıcılarına aktarmak için environment anahtarını kullanın. Bu, ortamlar arasında değişebilecek yapılandırmalar için kritik öneme sahiptir (örneğin, veritabanı bağlantı dizeleri).
Değişkenler anahtar-değer çiftleri olarak veya liste biçiminde belirtilebilir.
version: '3.8'
services:
backend:
image: my-api
environment:
- DATABASE_URL=postgres://user:pass@host:5432/db
- NODE_ENV=developmentÜst Düzey `networks` ve `volumes`
Bunları hizmetlerin içinde tanımlamanın yanı sıra, docker-compose.yml dosyanızın üst düzeyinde özel adlandırılmış birimleri ve ağları da bildirebilirsiniz.
Bu, verilerin kalıcılığı ve kapsayıcılar arası iletişim için daha düzenli ve yeniden kullanılabilir tanımlamalar yapmanızı sağlar.
version: '3.8'
services:
# ... service definitions ...
networks:
my_app_network:
# custom network configuration
volumes:
db_data:
# named volume configurationHepsini Bir Araya Getirme
Öğrendiklerimizi bir araya getiren küçük bir örneği inceleyelim. Bu örnek, bir imaj, bağlantı noktaları ve adlandırılmış bir birim kullanarak bir web hizmeti ile bir veritabanı hizmeti tanımlar.
Girintilemenin yapıyı nasıl oluşturduğuna dikkat edin.
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- web_content:/usr/share/nginx/html
db:
image: postgres:13
environment:
- POSTGRES_DB=mydb
- POSTGRES_USER=user
- POSTGRES_PASSWORD=secret
volumes:
web_content:
db_data:Compose Dosyası Denetimi
Aşağıdaki YAML parçacıklarından hangisi, `myapi:1.0` imajını kullanan ve kapsayıcının 3000 numaralı bağlantı noktasını ana makinenin 8080 numaralı bağlantı noktasına açan, 'api' adlı bir Docker Compose hizmetini doğru şekilde tanımlar?
Özet: Compose Dosyasının Temel Unsurları
Harika iş çıkardınız! docker-compose.yml dosyası yazmanın temellerini öğrendiniz.
- Dosya bir
versionile başlar. services, uygulamanızın bileşenlerini tanımlar.- Her hizmet bir
imagekullanır;portsile bağlantı noktalarını dışarı açabilir, kalıcılık içinvolumeskullanabilir veenvironmentdeğişkenlerini ayarlayabilir. - Üst düzey
networksvevolumes, gelişmiş yapılandırmaya olanak tanır.
Bu YAML yapısına hâkim olmak, birden çok kapsayıcı içeren uygulamaları düzenlemek için çok önemlidir!
Sıkça Sorulan Sorular
“Compose Dosyası Yazma” dersi ücretsiz mi?
Evet — “Compose Dosyası Yazma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve DevOps Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DevOps Bootcamp kursu toplamda 4 dersten oluşur.
“Compose Dosyası Yazma” dersinde ne öğreneceğim?
Hizmetleri, ağları ve birimleri tanımlamak için `docker-compose.yml` YAML söz dizimini öğrenin. DevOps Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
DevOps Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te DevOps Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Compose Dosyası Yazma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu DevOps Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her DevOps Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Docker Compose Nedir?
- Compose Dosyası Yazma
- Birden Çok Hizmet İçeren Uygulamaları Dağıtma
- Ortam Değişkenleri ve .env Dosyaları