1、查看 docker compose depoly 语法
官网地址 : https://docs.docker.com/compose/compose-file/#deploy
2、docker-compose.yml
# docker compose api 版本
version: '3'
services:
# 定义了 两个 service 分别是 名字分别是 wordpress 和 mysql
web:
image: wordpress
ports:
#本地 8080 端口 映射 容器 80 端口
- 8080:80
environment:
# wordpress 连接数据库 的 host 为 mysql , passwword 为 root 类似于 -e
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: root
networks:
- my-network
depends_on:
- mysql
deploy:
# 可以进行横向拓展 初始化节点为3个
mode: replicated
replicas: 3
# 重启政策
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
#更新政策
update_config:
parallelism: 1
delay: 10s
mysql:
image: mysql:5.7.27
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
volumes:
#外部 mysql-data 挂载到 容器内的 /var/lib/mysql
- mysql-data:/var/lib/mysql
networks:
#指定连接 的网络 为 my-network
- my-network
deploy:
# mysql 节点全局只有一个,不可以横向拓展
mode: global
# 只能部署到 manager 节点
placement:
constraints:
- node.role == manager
volumes:
mysql-data:
networks:
my-network:
driver: overlay
3、部署
在swarm模式下部署,用stack
docker stack deploy wordpress
[vagrant@swarm-manager ~]$ docker stack deploy wordpress --compose-file=docker-compose.yml
查看部署容器数量:
[vagrant@swarm-manager ~]$ docker stack ls
NAME SERVICES ORCHESTRATOR
wordpress 2 Swarm
查看 容器部署具体细节:
[vagrant@swarm-manager ~]$ docker stack ps wordpress
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
jz52d0i03gba wordpress_mysql.p61nqttz7jeq5gol5o9tyeuio mysql:5.7.27 swarm-manager Running Running about a minute ago
bs5n78dj44j0 wordpress_web.1 wordpress:latest swarm-worker2 Running Running about a minute ago
vivx538ld6em wordpress_web.2 wordpress:latest swarm-manager Running Running about a minute ago
js5klc67ffo3 wordpress_web.3 wordpress:latest swarm-worker1 Running Running 2 minutes ago
查看 各个 sevices 的情况:
[vagrant@swarm-manager ~]$ docker stack services wordpress
ID NAME MODE REPLICAS IMAGE PORTS
otxulx0kqmj5 wordpress_web replicated 3/3 wordpress:latest *:8080->80/tcp
uuzdowxst3o8 wordpress_mysql global 1/1 mysql:5.7.27
4、浏览器访问:
任意一台ip访问即可。
http://192.168.205.10:8080/
5、删除wordpress
[vagrant@swarm-manager ~]$ docker stack rm stop wordpress