Docker Compose servis (service) tanımı nasıl yapılır?

Docker Compose Nedir?

Docker Compose, birden fazla Docker konteynerini bir arada yönetmek için kullanılan bir araçtır. Tamamen uygulama ve bağımlılıkları üzerinde çalışan Docker konteynerlerini tanımlamak ve çalıştırmak için gerekli olan bir yapılandırma dosyası (genellikle `docker-compose.yml` adıyla anılır) ile birlikte gelir. Docker Compose, uygulamanın yaşam döngüsünü basit bir şekilde yönetmek için faydalıdır, çünkü konteynerlerin birleşimlerini kolayca oluşturup düşürebilir.

Servis Nedir?

Docker Compose içerisinde, bir servis bir Docker konteynerinin bir uygulama bileşeni olarak tanımlanır. Her servis, belirli bir Docker imajına dayanır ve bu imajdan oluşturulacak olan konteynerin nasıl çalışacağına dair yapılandırma ayarlarını içerir. Bir uygulamanın birden fazla servisi olabilir; örneğin, bir web sunucusu, veritabanı ve önbellek gibi bileşenler ayrı servisler olarak tanımlanabilir.

Docker Compose YML Dosya Yapısı

Docker Compose yapılandırma dosyası YAML formatında yazılır. Bu dosyada uygulamanın servisleri, ağları ve hacimleri gibi bileşenleri tanımlamak için belirli anahtar kelimeler kullanılır. Örneğin, `version`, `services`, `networks` ve `volumes` anahtarları bu dosyada sıkça kullanılır.

Servis Tanımı

Bir servisin tanımı, `services` anahtarının altında gerçekleştirilmektedir. Her bir servis, bir isim verilerek tanımlanır ve ardından gerekli ayarlar belirtilir. Aşağıda, bir servis tanımının temel bileşenleri açıklanmaktadır:

1. İmaj (image): Servisin kullanılacak Docker imajını belirtir. İmaj, bir Dockerfile ile oluşturulabilir veya Docker Hub gibi bir kaynaktan alınabilir.

2. Context: Servisin oluşturulacağı dizini belirtir. Genellikle imajın oluşturulacağı Dockerfile’ın bulunduğu dizin olarak ayarlanır.

3. Yürütme Komutları (command): Servisin başlatıldığında çalıştırılacak komutları belirler. Bu komut, imaj içindeki varsayılan komutun üstüne yazılabilir.

4. Ortamsal Değişkenler (environment): Servisin çalışması sırasında kullanılacak olan ortam değişkenlerini içerir. Bu değişkenler, servislerin yapılandırılmasında önemli bir rol oynar.

5. Hacimler (volumes): Konteyner ile ana makine arasında veri paylaşımı yapmak için kullanılır. Bu sayede veriler konteyner silinse bile korunmuş olur.

6. Bağlantılı Servisler (depends_on): Bir servisin başka bir servise bağımlı olduğunu belirtir. Örneğin, bir web servisinin veritabanı servisine başlamadan çalışmaması için bu ayar kullanılabilir.

Örnek Bir Docker Compose Servis Tanımı

Aşağıda basit bir web uygulaması ve bir veritabanı servisi ile ilgili örnek bir `docker-compose.yml` dosyası bulunmaktadır:

“`yaml
version: ‘3.8’

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

db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
– db_data:/var/lib/mysql

volumes:
db_data:
“`

Bu yapılandırmada iki servis tanımlanmıştır: `web` ve `db`. Web servisi Nginx imajını kullanırken, veritabanı servisi MySQL imajını kullanmaktadır. Web servisi 80. portu ana makineye haritalamakta ve `html` klasöründeki dosyaları sunmaktadır. Veritabanı servisi ise belirli bir ortam değişkeni ile (MYSQL_ROOT_PASSWORD) başlatılmaktadır.

Servisin Çalıştırılması

Servisleri başlatmak için, yapılandırma dosyasının bulunduğu dizinde terminalden `docker-compose up` komutu yürütülmelidir. Bu komut, belirlenen tüm servisleri oluşturur ve çalıştırır. Eğer arka planda çalıştırmak isteniyorsa, komutun sonuna `-d` (detached) parametresi eklenebilir.

Servisleri Yönetmek

Docker Compose, servislerin yönetimi için birkaç komut sunar. Örneğin, `docker-compose down` komutu, çalıştıran tüm servisleri durdurur ve onları siler. Ayrıca, `docker-compose logs` komutu ile tüm servislerin loglarına erişim sağlanabilir. Bu, uygulama geliştirme ve hata ayıklama sırasında oldukça faydalı bir özelliktir.

Sonuç

Docker Compose, birden fazla servisi bir arada yönetmeyi sağlayan güçlü bir araçtır. Servis tanımlamaları, yapılandırma dosyası içerisinde net bir şekilde belirtilir ve bu yapılandırma, uygulamanın bileşenleri arasında etkili bir iletişim sağlar. Docker Compose sayesinde uygulama geliştirme süreci daha düzenli ve yönetilebilir hale gelir.

CEVAP VER

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

SON İÇERİKLER

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