Docker swarm 使用服务编排部署lnmp
一、简介
目的:在Docker Swarm集群中,使用stack服务编排搭建lnmp来部署WordPress
- 使用私有仓库的nginx和php镜像
- mysql使用dockerhup最新镜像
- 使用nfs共享存储做数据持久化,包括nginx配置文件、wordpress网站文件、mysql配置文件和数据
使用nfs volume做数据持久化,可以让所有节点共享数据,这样数据只需要保留一份,方便部署和更新
二、准备
(1)新建nfs存储的目录
# 配置文件目录
mkdir -p /data/conf/{stack_nginx,stack_mysql} # 数据存放目录
mkdir -p /data/storage/{mysql_data,web_data}
(2)配置nfs
vim /etc/exports /data/conf/stack_nginx 172.16.60.0/24(rw,sync,no_root_squash)
/data/conf/stack_mysql 172.16.60.0/24(rw,sync,no_root_squash)
/data/storage/web_data 172.16.60.0/24(rw,sync,no_root_squash)
/data/storage/mysql_data 172.16.60.0/24(rw,sync,no_root_squash)
(3)重新nfs
systemctl restart nfs
三、部署服务
(1)编写ymal文件
version: '3.3'
services:
nginx:
image: 172.16.60.95:5000/nginx:v1.0.1
ports:
- "8000:80"
networks:
- stack_net
volumes:
- type: volume
source: webdata
target: /usr/local/nginx/html
volume:
nocopy: true
- type: volume
source: nginx_conf
target: /usr/local/nginx/conf/vhosts
volume:
nocopy: true
deploy:
mode: replicated
replicas: 3
resources:
limits:
cpus: '0.2'
memory: 200M
reservations:
cpus: '0.1'
memory: 50M
depends_on:
- php
- mysql
php:
image: 172.16.60.95:5000/php:v1.0.1
networks:
- stack_net
volumes:
- type: volume
source: webdata
target: /usr/local/nginx/html
volume:
nocopy: true
deploy:
mode: replicated
replicas: 3
resources:
limits:
cpus: '0.2'
memory: 200M
reservations:
cpus: '0.1'
memory: 50M mysql:
image: mysql:latest
networks:
- stack_net
ports:
- "3307:3306"
volumes:
- type: volume
source: mysql_cnf
target: /etc/mysql/conf.d
volume:
nocopy: true
- type: volume
source: dbdata
target: /var/lib/mysql
volume:
nocopy: true
deploy:
resources:
limits:
cpus: '0.5'
memory: 200M
reservations:
cpus: '0.25'
memory: 50M
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: wordpress
MYSQL_USER: wp
MYSQL_PASSWORD: wp123456 networks:
stack_net:
driver: overlay volumes:
webdata:
driver_opts:
type: "nfs"
o: "addr=172.16.60.95,vers=4,soft,timeo=180,bg,tcp,rw"
device: "172.16.60.95:/data/storage/web_data"
dbdata:
driver_opts:
type: "nfs"
o: "addr=172.16.60.95,vers=4,soft,timeo=180,bg,tcp,rw"
device: "172.16.60.95:/data/storage/mysql_data"
nginx_conf:
driver_opts:
type: "nfs"
o: "addr=172.16.60.95,vers=4,soft,timeo=180,bg,tcp,rw"
device: "172.16.60.95:/data/conf/stack_nginx" mysql_cnf:
driver_opts:
type: "nfs"
o: "addr=172.16.60.95,vers=4,soft,timeo=180,bg,tcp,rw"
device: "172.16.60.95:/data/conf/stack_mysql"
(2)部署
# docker stack deploy -c service_stack.yml wp
Creating service wp_php
Creating service wp_mysql
Creating service wp_nginx
(3)查看服务
虽然服务名称中加了wp_*,但是在swarm的dns解析中,一样可以识别ymal文件中定义的service名称
# docker service ls
pmd1si576gcf wp_mysql replicated 1/3 mysql:latest *:3307->3306/tcp
3f6y5uct3qpc wp_nginx replicated 3/3 172.16.60.95:5000/nginx:v1.0.1 *:8000->80/tcp
ut8kphc9pu86 wp_php replicated 3/3 172.16.60.95:5000/php:v1.0.1
[root@manager conf]# docker stack ls
NAME SERVICES
wp 3
(4)查看数据卷
# 工作节点
[root@node-01 ~]# docker volume ls
DRIVER VOLUME NAME local wp_dbdata
local wp_mysql_cnf
local wp_nginx_conf
local wp_webdata
四、部署WordPress
nginx和mysql配置文件和上一篇部署lnmp是一样的
(1)下载wordpress
# 下载WordPress压缩包
wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz # 解压到web文件共享存储的目录或者 数据卷目录下
tar -zxvf wordpress-4.9.4-zh_CN.tar.gz -C /var/lib/docker/volumes/wp_webdata/_data/
(2)WordPress网站设置
# 访问任意节点
http://172.16.60.95:8000/wordpress
①
②
③第一次手动写入
④ 填写信息,设置用户(admin/123456)
⑤完成登入
Docker swarm 使用服务编排部署lnmp的更多相关文章
- Docker Swarm集群中部署Traefik负载均衡器
一.创建单节点的Docker Swarm集群 docker swarm init 二.在Swarm集群中创建一个网络 docker network create --driver=overlay tr ...
- Docker Swarm 创建服务
Docker Swarm 创建服务 环境: 系统:Centos 7.4 x64 应用版本:Docker 18.09.0 管理节点:192.168.1.79 工作节点:192.168.1.78 工作节点 ...
- Docker Swarm java 服务集群
Docker Swarm java 服务集群 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docker ...
- 云计算之路-阿里云上-容器难容:优化自建 docker swarm 集群的部署
在上周六遭遇阿里云容器服务 swarm 版的故障之后,我们决定还是走自建 docker swarm 之路,只要不是阿里云底层的问题,我们相信会找到办法解决或避开自建 docker swarm 不稳定的 ...
- Docker之Compose服务编排
Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Comp ...
- (转)Docker之Compose服务编排
转自:https://www.cnblogs.com/52fhy/p/5991344.html Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过 ...
- docker中基于centos镜像部署lnmp环境 php7.3 mysql8.0 最新版
Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源. Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux机器上 ...
- 三十九.NoSQL概述 部署Redis服务 、 部署LNMP+Redis
1. 搭建Redis服务器 在主机 192.168.4.50 上安装并启用 redis 服务 设置变量test,值为123 查看变量test的值 1.1 搭建redis服务器 1.1.1 安装re ...
- 几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm
微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...
随机推荐
- Python脚本文件(.py)打包为可执行文件(.exe)即避免命令行中包含Python解释器
在最近的软件工程作业中用到了将Python脚本转化为exe文件这一过程,网上各种博客介绍了很多,有些东西都不完全,我也是综合了很多种方法最后才实现的,我就把这些整理出来,希望可以帮到大家~ 一.环 ...
- [BUAA软工]第零次博客作业---问题回答
[BUAA软工]第0次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第0次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...
- 面向对象OO第15次作业总结
面向对象OO第15次作业总结 1.论述测试与正确性论证的效果差异,比较其优缺点测试通过大量测试数据来覆盖测试代码,比较直观,优点在于知道测的是啥,特别直观,缺点在于很难覆盖所有情况.正确性论证从逻辑关 ...
- java实验二实验报告
一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式 二.实验过程(本次试验都 ...
- 福大软工1816 · 评分结果 · beta冲刺总评
作业地址:beta答辩总结.beta冲刺7.beta冲刺6.beta冲刺5.beta冲刺4.beta冲刺3.beta冲刺2.beta冲刺1.beta冲刺前准备 作业提交准则 按时交 - 有分 晚交 - ...
- 【动态规划】POJ-2229
一.题目 Description Farmer John commanded his cows to search for different sets of numbers that sum to ...
- angularJS1笔记-(20)-模块化加载机制seajs
SeaJS是一个遵循CMD规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制. 与jQuery等JavaScript框架不同,SeaJS不会扩展封装语言特性,而 ...
- 解决在Mac上用pyenv安装python3失败的问题
背景 前段时间在本地Mac系统上要跑一个python3写的压测脚本. Mac默认安装的是python2, 而且很多软件依赖的也是python2. 为了不影响现有系统其它软件, 当时安装了pyenv来实 ...
- Scrum 4.0(未完待续)
看板设计: 每日例会时间定于下午放学回到宿舍,地点是在宿舍外的走廊或宿舍里,特殊情况待定: 团队开会照片: 任务认领: 首页设计-------王俊杰 鸡汤版面-------列志华 论“汤”版面---- ...
- 第四周PSP&进度条
团队项目PSP 一:表格 C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 讨论 讨论开发环境.工具以及技术 8:37 10:42 25 10 ...