Deploy Docker Stack

Docker Stack เป็นการรัน docker-compose.yml ให้สามารถทำ Replica เหมือนกับทีทำบน Docker Swarm เช่น ถ้าเรากำหนด Replica ไว้ 3 ก็จะไปสร้าง Container ไว้ทั้ง 3 Node แต่ถ้าเราใช้ docker-compose.yml จะต้องใช้ Docker Stack ในการ Deploy


Get Started

  • สร้างไฟล์ docker-compose.yml เพื่อทำการรัน Service 2 ตัว คือ PHP และ MySQL
version: '3'
services:
  php:
    image: php:5.6-apache
    container_name: lamp_php5.6_apache
    restart: always
    deploy:
      replicas: 3
    volumes:
      - ./html/:/var/www/html
    ports:
      - 80:80
  mariadb:
    image: mariadb:latest
    container_name: lamp_mariadb
    restart: always
    deploy:
      replicas: 3
    environment:
      - MYSQL_ROOT_PASSWORD=P@ssw0rd
      - MYSQL_DATABASE=lamp
      - MYSQL_USER=lamp
      - MYSQL_PASSWORD=lamp
  • ทำการ Deploy docker-compose.yml ด้วย Docker Stack
# docker stack deploy --compose-file docker-compose.yml lamp
  • ตรวจสอบ Stack ที่เราได้ Deploy จะเห็นว่า Stack ที่ชื่อ lamp มีอยู่ 2 Service
# docker stack ls
NAME                SERVICES            ORCHESTRATOR
lamp                2                   Swarm
  • ตรวจสอบ Service ของ lamp Stack ว่ามีการทำ Replicated เท่าไหร่ในแต่ละ Service
# docker stack services lamp
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
fftuvl3aea4k        lamp_php            replicated          3/3                 php:5.6-apache      *:80->80/tcp
zxonde1mgtwv        lamp_mariadb        replicated          3/3                 mariadb:latest
  • ตรวจสอบสถานะของ Service จะเห็นว่า lamp_php จะรันอยู่บนโหนด Manager ที่เดียวเนื่องจากที่ไฟล์ docker-compose.yml เราได้ทำการระบุ Volume ไว้ มันเลยไม่สามารถทำ Replica ได้
# docker stack ps lamp
ID                  NAME                IMAGE               NODE                      DESIRED STATE       CURRENT STATE                ERROR                              PORTS
l0p7c2zm0y51        lamp_mariadb.1      mariadb:latest      lab-docker-01.lab.local   Running             Running 2 minutes ago
tge4fav48u6h        lamp_php.1          php:5.6-apache      lab-docker.lab.local      Running             Running about a minute ago
ydf6s0cyp0hm        lamp_php.2          php:5.6-apache      lab-docker.lab.local      Running             Running 34 seconds ago
z3hadbd94b2o        lamp_mariadb.2      mariadb:latest      lab-docker.lab.local      Running             Running about a minute ago
ez5bw804v9st        lamp_php.3          php:5.6-apache      lab-docker.lab.local      Running             Running 35 seconds ago
di6eumxmdae0        lamp_mariadb.3      mariadb:latest      lab-docker-02.lab.local   Running             Running 2 minutes ago
  • ทำการลบ Stack
# docker stack rm lamp
Removing service lamp_mariadb
Removing service lamp_php
Removing network lamp_default

อ่านเพิ่มเติม : https://dockr.ly/2PpCkDH


Leave a Reply

Your email address will not be published. Required fields are marked *