Docker Compose

Docker Linux Compose Docker Compose Container Containerization Sanallaştırma VM Terminal Temel

Docker Compose; birbiriyle ilişkili birden fazla konteynırın konfigüre edip çalıştırılmasını sağlar. Böylece uygulamanın kullandığı her konteynır için el ile ayrı ayrı konfigürasyon yapılması ve çalıştırılması gerekmez. Docker compose komutu ile uygulama çalıştırmak için docker-compose.yaml dosyası kullanılır.

Kurulum

Docker Compose yüklü olup olmadığını kontrol için terminal ekranında;

Kod

docker compose version

Docker Compose version cevabı alınıyor ise Docker Compose yüklüdür.

Docker Compose yüklü değil ise docker-compose-plugin yüklenir. Detaylı kurulum adımları için tıklayınız...

Docker Compose Dosyası Oluşturmak

Docker Compose dosyası, Docker uygulamasınındaki konteynır, volume ve ağ tanımlamaları ve ayarlarını barındıran .yaml uzantılı dosyadır. Uygulamanın çalışması için gerekli olan tüm tanımları barındırır. Dosyadaki tanımlara göre konteynırlar çalıştırılır ve uygulama ayağa kaldırılır.

Örnek bir Docker Compose dosyası; docker-compose.yaml

Örnek bir Docker Compose dosyası
Resim 1. Örnek bir Docker Compose dosyası

Docker Compose dosyasındaki version tanımlaması, Docker Compose dosyasının sürümünü belirtir;

Kod

version: '3.9'

services tanımlaması, çalışacak konteynırları ve konteynır ayarlarını belirtir; image tanımlaması kullanılacak imaj adını belirtir. container_name ile konteynır ismi tanımlanır. port ile konteynıra erişim için kullanılan portları tanımlanır. Konteynır env parametreleri environment tanımı altına yazılabilir. Host volume tanımlamak için volumes tanımlaması altına ilgili dizinler yazılır. expose tanımı ile konteynırlar tarafından erişilebilen port tanımlanır, expose ile tanımlanan portlara host bilgisayardan erişilemez sadece aynı ağda üzerindeki konteynırlar erişebilir.

Kod

services:
    db:
        image: mysql:8.0.27
        container_name: wordpress-mysqldb
        volumes:
            - /opt/mysql/:/var/lib/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=somewordpress
            - MYSQL_DATABASE=wordpress
            - MYSQL_USER=wordpress
            - MYSQL_PASSWORD=wordpress
        expose:
            - 3306
            - 33060
        

Named Volume tanımlamak için en üst düzeyde volumes tanımlaması altına volume ismi yazılır sonrasında tanımlanan volume ismi konteynır altındaki volumes tanımı altına yazılır;

Kod

services:
    db:
        image: mysql:8.0.27
        container_name: wordpress-mysqldb
        volumes:
            - wordpressdb_data:/var/lib/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=somewordpress
            - MYSQL_DATABASE=wordpress
            - MYSQL_USER=wordpress
            - MYSQL_PASSWORD=wordpress
        expose:
            - 3306
            - 33060
        
volumes:
    wordpressdb_data:

İkinci bir konteynır tanımlamak için en üst düzeyde services tanımlaması altına ilgili ismi yazılır;

Kod

services:
    db:
        image: mysql:8.0.27
        container_name: wordpress-mysqldb
        volumes:
            - wordpress_db_data:/var/lib/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=somewordpress
            - MYSQL_DATABASE=wordpress
            - MYSQL_USER=wordpress
            - MYSQL_PASSWORD=wordpress
        expose:
            - 3306
            - 33060

    wordpress:
        image: wordpress:latest
        container_name: wordpress
        volumes:
            - wordpress_data:/var/www/html
        ports:
            - 8084:80
        environment:
            - WORDPRESS_DB_HOST=db
            - WORDPRESS_DB_USER=wordpress
            - WORDPRESS_DB_PASSWORD=wordpress
            - WORDPRESS_DB_NAME=wordpress

volumes:
    wordpress_db_data:
    wordpress_data:
    

Docker Compose Komutları

docker-compose.yaml dosyasında belirtilen şekilde konteynırları başlatır;

Kod

docker compose up -d

docker-compose.yaml dosyasıyla oluşturulan konteynırları ve ağları siler;

Kod

docker compose down

docker-compose.yaml dosyasıyla oluşturulan konteynırları, volume ve ağları siler;

Kod

docker compose down --volumes

docker-compose.yaml dosyasıyla oluşturulan tüm konteynırları durdurur;

Kod

docker compose stop

docker-compose.yaml dosyasıyla oluşturulan tüm süreçleri gösterir;

Kod

docker compose ps

docker-compose.yaml dosyasıyla oluşturulan tüm loglarını gösterir;

Kod

docker compose logs

docker-compose.yaml dosyasıyla oluşturulan tüm kaynak kullanımını gösterir;

Kod

docker compose top

Kaynaklar

  1. Overview , docs.docker.com, 03.03.2023 tarihinde alındı.
  2. Docker Compose overview , docs.docker.com, 03.03.2023 tarihinde alındı.
  3. Key features and use cases , docs.docker.com, 03.03.2023 tarihinde alındı.
  4. Compose file specification , docs.docker.com, 03.03.2023 tarihinde alındı.
  5. Quickstart: Compose and WordPress , github.com/docker, 29.05.2023 tarihinde alındı.
  6. Difference Between Expose and Ports in Docker Compose , baeldung.com, 29.05.2023 tarihinde alındı.

 


Beğen