Docker Compose YAML dosyası nasıl yazılır?

Docker Compose, birden fazla konteynerin bir arada yönetilmesine olanak tanıyan bir araçtır. YAML (YAML Ain’t Markup Language) dosyası, Docker Compose yapılandırmalarının tanımlanmasında kullanılır. Bu dosya, konteynerlerin yapılandırmaları, ağ ayarları ve hacim bağlamaları gibi bilgileri içerir. Docker Compose, özellikle mikro hizmet mimarileri ve uygulamaların hızlı bir şekilde geliştirilmesinde oldukça faydalıdır.

Docker Compose Dosya Yapısı

Docker Compose YAML dosyası, genellikle `docker-compose.yml` adıyla kaydedilir. Dosyanın temel yapısı, belirli alanların bir araya getirilmesi ile oluşturulur. Genel yapı şu şekildedir:

“`yaml
version: ‘3’
services:
service_name:
image: image_name
build: context_path
ports:
– “host_port:container_port”
volumes:
– volume_name:container_path
environment:
– ENV_VAR=value
“`

Versiyon Belirleme

YAML dosyasının en üst kısmında, kullanılacak Docker Compose sürümünü belirtmek önemlidir. `version` anahtar kelimesi, hangi sürümün kullanılacağını tanımlar. Örneğin, `version: ‘3’` ifadesi, 3. sürümdeki özelliklerin kullanılmasını sağlar. Sürüm belirlemek, uyumluluk ve özelliklerin doğru çalışması açısından kritik bir adımdır.

Servis Tanımlamaları

YAML dosyasının en önemli kısmı, `services` anahtar kelimesinin altında tanımlanan servislerdir. Her bir servis, bir konteyneri temsil eder. Her servis şu temel bileşenleri içerebilir:

– image: Kullanılacak Docker görüntüsünü tanımlar. Eğer bir özel görüntü kullanılacaksa burada belirtmek gereklidir.

– build: Servisin hangi dizinden inşa edileceğini belirtir. Örneğin, `context_path` değerine, Dockerfile’ın bulunduğu dizin yolu yazılır.

– ports: Servis ile ana makine arasındaki port eşleşmelerini tanımlar. Örneğin, `- “8080:80″` ifadesi, ana makinadaki 8080 portu ile konteynerdeki 80 portunu eşler.

– volumes: Veri kalıcılığını sağlamak için hacim bağlamalarını tanımlar. `- volume_name:container_path` ifadesi, `volume_name` adlı yerel bir hacmi `container_path` dizinine bağlar.

– environment: Konteynerde kullanılacak çevresel değişkenleri tanımlar. `- ENV_VAR=value` şeklinde ifade edilir.

Örnek Bir Docker Compose YAML Dosyası

Aşağıdaki örnek, bir web uygulaması ve bir veritabanı içeren basit bir Docker Compose dosyasını göstermektedir:

“`yaml
version: ‘3’

services:
web:
image: nginx:latest
ports:
– “8080:80”
volumes:
– ./html:/usr/share/nginx/html

db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
– db_data:/var/lib/mysql

volumes:
db_data:
“`

Burada iki servis tanımlanmıştır: `web` ve `db`. `web` servisi, Nginx görüntüsünü kullanarak bir web sunucusu oluştururken, `db` servisi MySQL veritabanını çalıştırmaktadır. Her iki servis de, veri kalıcılığı için hacimler kullanmaktadır.

Hacimlerin Yönetimi

Docker Compose kullanırken, verilerin kalıcı olmasını sağlamak için hacimleri tanımlamak önemlidir. Hacimlerin yönetimi, verilerin silinmeden saklanmasını sağlayarak uygulamanın güvenilirliğini artırır. Hacim tanımında ayrıca, `volumes` anahtar kelimesi ile birlikte özel isimler verilebilir. Bu hacimler, başka servislerle paylaşılabilir veya ayrı bir şekilde yönetilebilir.

Ağ Yapılandırması

Docker Compose, servisler arasında iletişim sağlamak için varsayılan bir ağ oluşturur. Ancak, özel ağ tanımlamaları yapmak mümkündür. Ağlar, konteynerlerin birbirleriyle güvenli bir şekilde etkileşimde bulunmasına olanak tanır. Aşağıdaki örnek, özel bir ağ yapılandırmasını göstermektedir:

“`yaml
version: ‘3’

services:
web:
image: nginx
networks:
– webnet

db:
image: mysql
networks:
– webnet

networks:
webnet:
“`

Docker Compose Komutları

Docker Compose ile çalışırken, çeşitli yardımcı komutlar kullanarak projeleri yönetmek mümkündür. En yaygın kullanılan komutlar şunlardır:

– `docker-compose up`: Bu komut, tanımlanan tüm servisleri başlatır.

– `docker-compose down`: Çalışan tüm servisleri durdurur ve ilgili kaynakları temizler.

– `docker-compose logs`: Çalışan servislerin loglarını gösterir.

– `docker-compose exec`: Çalışan bir konteyner içinde komut çalıştırmak için kullanılır.

İleri Düzey Özellikler

Docker Compose, basit kullanımının yanı sıra daha karmaşık senaryolar için de olanaklar sunar. Örneğin, `depends_on` anahtar kelimesi, belli bir servis başlamadan diğer bir servisin başlamasını engellemeye yarar. Aynı zamanda, farklı bir dosya adı ile çalışmak için `-f` parametresi kullanılabilir.

Docker Compose, yapılandırılabilirliği ve esnekliği sayesinde büyük ölçekli projelerde etkin bir şekilde kullanılabilir. Uygulama mimarileri geliştirilirken, Docker Compose ile yönetilebilir ve sürdürülebilir projeler oluşturmak mümkündür.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

SON İÇERİKLER

İLGİNİZİ ÇEKEBİLİR