Bu yazımızda docker stack komutu üzerinde durarak yine bir örnekle açıklamaya çalışacağız. Önceki yazımızda docker compose üzerinde durmuştuk. Bu iki araç arasındaki bariz farkı anlatırken en kolay tanım: docker compose konteyner yapısı üzerinde çalışan docker stack ise swarm mantığı ile çalışan ve servis yapısı ile oluşturulan bir araçtır. Bunun bilinmesi anlaşılması açısından çok faydalı olacaktır.

Docker stack yukarıda belirttiğimiz üzere servis yapısı ile çalışan bir araçtır. Örnek olarak geçen yazımızda ele aldığımız wordpress ve mysql üzerinden giderek sürecin nasıl işlediği hakkında sizi bilgilendireceğim. Ben dosyamı yine docker-compose.yml olarak kaydediyorum ama siz isterseniz docker-stack.yml olarak kaydedebilirsiniz. Örnek YAML dosyamız aşağıdaki gibidir.

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: 2128138
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: 2128138

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - web_data:/var/www/html
     ports:
       - "8100:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: 2128138
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}
    web_data: {}

Buradaki servis komutlarını ve parametrelerini anlamayanlar için docker compose konulu yazımı okumalarını öneririm. Link aşağıda.

Buradaki tek fark uygulamamızı ayağı kaldırırken servis komutlarından faydalanıyoruz. Sonuç olarak uygulamamız servis olarak ayağı kalkıyor ve swarm modda kullanabiliyoruz.

docker stack deploy -c docker-compose.yml web

-c flag compose file olduğunu ve yolunu belirtmek için kullanılıyor. web ise uygulama adıdır.

Usage:	docker stack deploy [OPTIONS] STACK
docker stack deploy -c docker-compose.yml web
Ignoring unsupported options: restart

Creating network web_default
Creating service web_wordpress
Creating service web_db
$ docker service ls
ijpjnd80ur7w        web_db              replicated          0/1                 mysql:5.7                                 
45pfcucq3mg1        web_wordpress       replicated          1/1                 wordpress:latest                          *:8100->80/tcp

Dikkat ettiyseniz bu sürümde swarm olarak servis ayağı kaldırdığımız için restart parametresini görmezden geldi. Servis zaten scale olarak 1 de olduğundan her seferinden yeniden başlatacaktır.

Keyifli okumalar

Share: