Docker container’ları teker teker çalıştırmak, komutlar ve parametrelerle bağlamak zor ve zaman alıcı bir süreçtir. Bunun yerine Docker Compose container’ları daha kolay yönetmek ve çalıştırmak için Dockerfile gibi bir dosya üzerinden yönetilebilen bir süreç sağlar. Bu bölüm docker compose konusuna ayrılmıştır.
Docker Compose, bir dizi container’ı tek bir yapılandırma dosyası üzerinden çalıştırmak için kullanılır. Diğer bir deyişle, birçok container’ı aynı anda başlatabilir ve yönetebilirsiniz.
Docker Compose yapılandırma dosyaların formatı YAML (YAML Ain’t Markup Language)’dir. YAML, bir metin tabanlı bir biçimlendirme dilidir. Sözdizimi açık ve anlaşılır olduğu için yapılandırma için tercih edildiği düşüncesindeyim. Docker Compose yapılandırma dosyaları, .yml veya .yaml dosya uzantısı ile kaydedilirler. Örneğin, aşağıdaki gibi bir dosya ismi kullanılabilir: docker-compose.yml veya docker-compose.yaml.
Şimdi, MySQL ve PHPMyAdmin örneğimizi compose işlemine taşıyalım. (dosya ismi: docker-compose.yml)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
version: '1' services: db: image: mysql volumes: - /Users/erdincuzun/db:/var/lib/mysql environment: MYSQL_DATABASE: deneme MYSQL_ROOT_PASSWORD: mypass123 container_name: mysql-server command: --innodb_buffer_pool_size=256M phpmyadmin: image: phpmyadmin environment: PMA_HOST: db PMA_PORT: 3306 PMA_ARBITRARY: 1 ports: - 8080:80 container_name: phpmyadmin |
Yapılandırma dosyası, aşağıdaki hizmetleri tanımlar:
- db: Bu hizmet, MySQL veritabanı için bir Docker container’ı tanımlar. Container, mysql adlı bir Docker image’ni kullanarak oluşturulur ve /User/erdincuzun/db dizinini /var/lib/mysql dizinine bağlar. Bu sayede, MySQL veritabanının verileri /User/erdincuzun/db dizininde saklanır ve kolayca korunur. Ayrıca, MySQL veritabanı için MYSQL_DATABASE ortam değişkenini tanımlar ve –innodb_buffer_pool_size=256M komutunu kullanarak MySQL veritabanının bellek kullanımını ayarlar.
- phpmyadmin: Bu hizmet, phpMyAdmin için bir Docker container tanımlar. Container, phpmyadmin adlı bir Docker image’ini kullanarak oluşturulur ve 8080 portunu 80 portuna bağlar. Bu sayede, phpMyAdmin arayüzüne http://localhost:8080 adresinden erişilebilirsiniz. Ayrıca, PMA_HOST, PMA_PORT ve PMA_ARBITRARY ortam değişkenlerini tanımlar ve bu değişkenleri kullanarak phpMyAdmin’in MySQL veritabanına nasıl erişeceğini belirler.
Terminal ekranında aynı klasörde olmayı ve daha öncesinde dosyayı kaydetmeyi unutmayın. Ardından…
1 |
docker-compose up |
Bu yapılandırma dosyasını kullanarak, docker-compose up komutu ile MySQL veritabanı ve phpMyAdmin container’larını aynı anda çalıştırabilirsiniz. Bu yapılandırma dosyasından container ayarlarını kolayca değiştirebilirsiniz.
Bu örnekte root şifresini direkt dosya içinden ayarladık. (Güvenlik açısından kullanıcı özel olsun diye…) Örneğin:
1 |
$ docker-compose up -e MYSQL_ROOT_PASSWORD=sizinsifreniz |