一、简介

目的:在Docker Swarm集群中,使用stack服务编排搭建lnmp来部署WordPress

  1. 使用私有仓库的nginx和php镜像
  2. mysql使用dockerhup最新镜像
  3. 使用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的更多相关文章

  1. Docker Swarm集群中部署Traefik负载均衡器

    一.创建单节点的Docker Swarm集群 docker swarm init 二.在Swarm集群中创建一个网络 docker network create --driver=overlay tr ...

  2. Docker Swarm 创建服务

    Docker Swarm 创建服务 环境: 系统:Centos 7.4 x64 应用版本:Docker 18.09.0 管理节点:192.168.1.79 工作节点:192.168.1.78 工作节点 ...

  3. Docker Swarm java 服务集群

    Docker Swarm java 服务集群 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docker ...

  4. 云计算之路-阿里云上-容器难容:优化自建 docker swarm 集群的部署

    在上周六遭遇阿里云容器服务 swarm 版的故障之后,我们决定还是走自建 docker swarm 之路,只要不是阿里云底层的问题,我们相信会找到办法解决或避开自建 docker swarm 不稳定的 ...

  5. Docker之Compose服务编排

    Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Comp ...

  6. (转)Docker之Compose服务编排

    转自:https://www.cnblogs.com/52fhy/p/5991344.html Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过 ...

  7. docker中基于centos镜像部署lnmp环境 php7.3 mysql8.0 最新版

    Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源. Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux机器上 ...

  8. 三十九.NoSQL概述 部署Redis服务 、 部署LNMP+Redis

    1. 搭建Redis服务器 在主机 192.168.4.50 上安装并启用 redis 服务 设置变量test,值为123 查看变量test的值   1.1 搭建redis服务器 1.1.1 安装re ...

  9. 几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm

    微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...

随机推荐

  1. 基于NABCD评论作业-王者荣耀交流协会PSP DAILY

    一.根据(不限于)NABCD评论作品的选题   N(Need,需求):在我知道PSP DAILY这款软件的时候,就认为这款软件对于学习软件工程课的学生来说有很大的需要.对于需求来说,软件工程课程中的学 ...

  2. Scrum Meeting 7 -2014.11.13

    之前srcum没写好是我的错.以后会每天更新的. 老师反映之前项目小组从pdf中提取作者效果不好,我们讨论决定进行一定的优化.在整合测试的同时开始服务器程序部署. Member Today’s tas ...

  3. SQL语句联表查询

    Natural join:字段名和数据类型相同字段进行等值连接: inner join:与join相同,把符合条件的元组选出来,创建视图时用的即是inner join: left join:左表全选出 ...

  4. 第二次作业<2>

    自学计划 应为对网络的教程并不了解,所以-- 我扒了一遍同学的博客,找到了两个课程. 慕课网 和 这个. 选择这两个教程主要是深入浅出,比较合理. 开始先两个课程相互应证,多了解以后可能会选择一个.虽 ...

  5. wamp 修改www目录

    我的情况 Wamp版本:2.2 WAMP2.2安装目录:C:/ www目录:D:/wamp/www/ 变更目录:E:/HbuilderProjects/ 一 主要过程: (1)修改 D:\wamp\b ...

  6. ABP ModuleZero后台框架materialize禁止模拟select和checkbox

    使用abp modulezero自带那个后台框架发现一个操蛋的问题,所有的select和checkbox都被改成div模拟的,虽然比原生美观,但有时候真的很难用. 比如说要用select做一个联动菜单 ...

  7. python基础(三)python数据类型

    一.数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需 ...

  8. ini_set的权限大于error_reporting

    在用php做网站开发的时候 , 为防止用户看到错误信息,而出现的不友好界面.故一般性会在php.ini里设置:display_errors = Off;不过在开发的时候,我们有时候需要打开错误信息.这 ...

  9. QTime的本质上是一个int,QDateTime本质上是一个qint64

    研究这个问题的起因发现使用<=比较时间的不准确,所以怀疑是一个浮点数(Delphi里的time就是一个浮点数).结果却发现是一个int class Q_CORE_EXPORT QTime { e ...

  10. ACM数论之旅5---数论四大定理(你怕不怕(☆゚∀゚)老实告诉我)

    (本篇无证明,想要证明的去找度娘)o(*≧▽≦)ツ ----------数论四大定理--------- 数论四大定理: 1.威尔逊定理 2.欧拉定理 3.孙子定理(中国剩余定理) 4.费马小定理 (提 ...