1. 程式人生 > >111、什麽是stack (Swarm18)

111、什麽是stack (Swarm18)

weight 正常 password 可靠的 多個 doc padding www. 創建

參考https://www.cnblogs.com/CloudMan6/p/8119150.html 什麽是 stack ? 在將這個之前先回顧一下前面部署WordPress的過程: 1、創建secret 2、創建mysql service 3、創建WordPress service 也就是說,這個應用包含了兩個service ; mysql + wordpress 。他們之間有明確的依賴關系,必須先啟動mysql。 為了保證這個依賴關系,我們控制了 docker secret 和 docker service 命令的執行順序,只不過這個過程是手工完成的。 假如我們需要頻繁的在不同環境中部署WordPress應用,如果每次都手工執行效率就太低了,而且容器出錯誤。這是自動化的一個好機會,首先我們把這個工程寫成一個自動化的腳本。 openssl rand -base64 20 | docker secret create mysql_root_password - openssl rand -base64 20 | docker secret create mysql_password - docker network create --driver overlay mysql_private docker service create --name mysql --network mysql_private --secret source=mysql_root_password,target=mysql_root_password --secret source=mysql_password,target=mysql_password -e MYSQL_ROOT_PASSWORD_FILE=‘/run/secrets/mysql_root_password‘ -e MYSQL_PASSWORD_FILE=‘/run/secrets/mysql_password‘ -e MYSQL_USER=‘wordpress‘ -e MYSQL_DATABASE=‘wordpress‘ mysql:5.7 docker service create --name wordpress --network mysql_private --publish 80:80 --secret source=mysql_password,target=wp_db_password -e WORDPRESS_DB_HOST=‘mysql:3306‘ -e WORDPRESS_DB_NAME=‘wordpress‘ -e WORDPRESS_DB_USER=‘wordpress‘ -e WORDPRESS_DB_PASSWORD_FILE=‘/run/secrets/wp_db_password‘ wordpress 這個腳本大體上能夠工作,實現了自動化,但是有兩個缺點: 1、目前只有兩個service,還比較簡單,現在的應用通常包含多個service,特別是采用 microservices 架構的應用,幾十個service是很正常。用shell腳本啟動和管理如此多的service將是一件非常有挑戰的任務。 2、我們還要維護service之間的依賴關系,比較容易出錯。而且如何判斷service正常運行也不是一件容易的事情,不光要看service是否存在,還要考慮service的實際運行狀態。 我們希望有一種更高效和可靠的方法來部署基於service的應用,這就是stack。 stack 包含一系列service,這些service組成了應用。stack通過一個YAML文件定義每個service,並描述service使用資源和各種依賴。 WordPress的stack版本
version: ‘3.1‘ services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD_FILE: /run/secrets/db_password secrets: - db_root_password - db_password wordpress: depends_on: - db image: wordpress:latest ports: - "80:80" environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD_FILE: /run/secrets/db_password secrets: - db_password secrets: db_password: file: db_password.txt db_root_password: file: db_root_password.txt volumes: db_data: 1、service 中定義了兩個 service : db 和 wordpress 2、secret 定義了兩個 secret: db_password 和 db_root_password ,在 service db 和 wordpress 的定義中引用了這兩個secret 3、volume定義了一個volume: db_data ,service db 使用了這個volume 4、wordpress 通過了 depends_on 指定自己依賴 db 這個 service 。 Docker 會保證 當 db 正常運行後再啟動 wordpress 可以在YAML 中定義的元素遠不止這些,完成的列表和使用方法可參考文檔 https://docs.docker.com/compose/compose-file/

111、什麽是stack (Swarm18)