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
微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...
随机推荐
- wordpress登录密码框明文显示最后一个输入的字符
wordpress登录密码框明文显示最后一个输入的字符 (function(a){a.fn.dPassword=function(c){var e={interval:200,duration:100 ...
- ORM PHP 学习记录
ORM:object relation mapping,即对象关系映射,简单的说就是对象模型和关系模型的一种映射.为什么要有这么一个映射?很简单,因为现在的开发语言基本都是oop的,但是传统的数据库却 ...
- servlet基础学习总结
Servlet的任务 1. 读取客户端发送的显示的数据,包括HTML表单和一些客户端程序的表单 2. 读取客户端发送的隐式的数据,包括cookies.媒体类型等 3. 处理数据并产生结果 4. ...
- Daily Scrum (2015/11/3)
今天我们的爬虫能在pc上成功运行并且把所爬取的数据存到服务器上了!我们已经搭建好数据库,把相关信息存到数据库中,并把数据存到D盘里共享给数据处理小组使用. 成员 今日工作 时间 明日工作 符美潇 完成 ...
- 20181126-java-面试知识-收集
链接:最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备 两本书的链接:Java Web轻量级开发面试教程和Java核心技术及面试指南.
- 【CSAPP笔记】14. 异常控制流和进程
从给处理器加电,到断电为止,处理器做的工作其实就是不断地读取并执行一条条指令.这些指令的序列就叫做 CPU 的控制流(control flow).最简单的控制流是"平滑的",也就是 ...
- nginx使用“sudo service nginx start”启动报错解决方案
下载nginx的启动脚本: # wget -O init-deb.sh http://library.linode.com/assets/660-init-deb.sh 将脚本添加到init.d目录和 ...
- ubuntu中启动VIM,以及学习VIM
启动VIM:首先打开终端,然后输入vi回车,然后输入i或者a,进入. 学习VIM:首先打开终端,然后输入vimtutor回车,然后进入教程学习.
- Java实现小学四则运算练习
Github项目地址:https://github.com/feser-xuan/Arithmetic.git 1.需求分析 软件基本功能要求如下: 程序可接收一个输入参数n,然后随机产生n道加减乘 ...
- 蜗牛慢慢爬 LeetCode 5.Longest Palindromic Substring [Difficulty: Medium]
题目 Given a string s, find the longest palindromic substring in s. You may assume that the maximum le ...