29 Mayıs 2023 • 25 dakikalık okuma
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.
Docker Compose yüklü olup olmadığını kontrol için terminal ekranında;
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ı, 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
Docker Compose dosyasındaki version tanımlaması, Docker Compose dosyasının sürümünü belirtir;
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.
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;
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;
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.yaml dosyasında belirtilen şekilde konteynırları başlatır;
docker compose up -d
docker-compose.yaml dosyasıyla oluşturulan konteynırları ve ağları siler;
docker compose down
docker-compose.yaml dosyasıyla oluşturulan konteynırları, volume ve ağları siler;
docker compose down --volumes
docker-compose.yaml dosyasıyla oluşturulan tüm konteynırları durdurur;
docker compose stop
docker-compose.yaml dosyasıyla oluşturulan tüm süreçleri gösterir;
docker compose ps
docker-compose.yaml dosyasıyla oluşturulan tüm loglarını gösterir;
docker compose logs
docker-compose.yaml dosyasıyla oluşturulan tüm kaynak kullanımını gösterir;
docker compose top