使用Docker Swarm 搭建Wordpress的方法

起因

我曾经把 wordpress 搭建在 Vultr 上,但是因为众所周知的原因,这个地方访问越来越慢。再后来我选择了新浪云,新浪云的确够便宜,也很不错,但是要备案,还有评论功能估计要阉割,想想还是算了,找个香港的主机搭建 wordpress 即可。

购买主机

我这里选择的是阿里云的轻量应用服务器,这个主机的好处就是便宜,够用。
比如我选择的香港的主机,一个月只需要 24 块钱,一核心一G内存,网速为 30Mbps,磁盘空间 25GB,月流量 1TB。

配置如下图

初始化 docker 环境

虽然上面有一件安装wordpress的功能,但是我不推荐,因为配置都太老了
最终我选择的是 ubuntu18.04 系统,直接用下面的命令即可完成安装 docker 并且初始化 docker swarm

curl -o- -L https://gist.githubusercontent.com/hangox/e679464f35dc2a78920e6249a21d7958/raw/c5541e38979dca1e3e1e9704ad171ed2f0556fa1/ubunut-install-docker.sh | bash

编写 docker-compose

配置一览

version: '3.7'

services:
 caddy:
  image: abiosoft/caddy
  ports:
   - 80:80
   - 443:443
  environment:
   - ACME_AGREE=true
   - TZ=Asia/Shanghai
  volumes:
   - caddy:/root/.caddy
   - wp-src:/usr/src/wordpress
  configs:
   - source: wp_caddy
    target: /etc/Caddyfile
 app:
  image: wordpress:5.4.1-php7.2-fpm
  environment:
   TZ: Asia/Shanghai
   WORDPRESS_DB_HOST: wp_db:3306
   WORDPRESS_DB_USER: root
   WORDPRESS_DB_PASSWORD: yourpassword
   WORDPRESS_DB_NAME: wordpress
  depends_on:
   - db
  volumes:
   - wordpress:/var/www/html
   - wp-src:/usr/src/wordpress
 db:
  image: mysql:8
  environment:
   TZ: Asia/Shanghai
   MYSQL_ROOT_PASSWORD: yourpassword
   MYSQL_DATABASE: wordpress
  command: --default-authentication-plugin=mysql_native_password
  volumes:
   - db:/var/lib/mysql

volumes:
 wordpress:
 db:
 caddy:
 wp-src:
configs:
 wp_caddy:
  external: true

配置解析

caddy

用来做反向代理,同时兼顾 https 证书申请,配置如下

https://47log.com https://www.47log.com {
  root /usr/src/wordpress
  gzip
  fastcgi / wp_app:9000 php
  rewrite {
    if {path} not_match ^\/wp-admin
    to {path} {path}/ /index.php?_url={uri}
  }
  log stdout
  errors stderr
}

这里我用到了 docker swarm 的 config 功能,直接把配置写入到 wp_caddy 这个配置中。

db

这里用的是 mysql8 , wordpress 是支持的,性能也要更好点
需要注意的,commmand 必须加上 command: --default-authentication-plugin=mysql_native_password 不然是没办法进行密码认证的,我就是忘记加这个蛋疼了一阵子。

app

注意连接方式
如果你是用 docker stack 部署的,部署的是什么名字,数据库连接那里就要加上名字的前缀。比如我这里是 docker stack deploy -c docker-compose.yml wp,我这里数据库在 docker 网络中的 host 就是 wp_db。如果你的 stack 名字为 wordpress , 就要对应的改为 wordpress_db。

注意配置 volume
- wordpress:/var/www/html 这个东西一定要配置,上次我就是没有配置这个东西,删掉 container,主题直接没有了。

使用 docker stack 部署

一行命令 docker stack deploy -c docker-compose.yml wp 等一段时间就能进入 wordpress 了

为什么使用 docker swarm。 因为有 portainer , docker-swarm 接入到 portainer 之后可以有全功能的配置能力。

到此这篇关于使用Docker Swarm 搭建Wordpress的方法的文章就介绍到这了,更多相关Docker Swarm搭建Wordpress内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-05-19

docker swarm 集群故障与异常详解

本文介绍了docker swarm 集群故障与异常详解,分享给大家,具体如下: 在上次遭遇 docker swarm 集群故障后,我们将 docker 由 17.10.0-ce 升级为最新稳定版 docker 17.12.0-ce . 前天晚上22:00之后集群中的2个节点突然出现CPU波动,在CPU波动之后,在凌晨夜深人静.访问量极低的时候,整个集群出现了故障,访问集群上的所有站点都出现了502,过了一段时间后自动恢复正常. ECS实例:swarm1-node5,CPU百分比于00:52发生告

详解使用docker 1.12 搭建多主机docker swarm集群

swarm是docker公司自己的容器集群管理工具,本文介绍了使用docker 1.12 搭建多主机docker swarm集群,分享给大家 准备 准备至少两台的centos 7 主机(全新最小安装, 可以使用虚拟机安装) 开放端口2377 tcp端口, 7946 4789 tcp udp 端口 本文使用192.168.99.101(hostname:centos-node4) 作为swarm manager 192.168.99.102(hostname:centos-node5) 作为sw

使用Docker Swarm搭建分布式爬虫集群的方法示例

在爬虫开发过程中,你肯定遇到过需要把爬虫部署在多个服务器上面的情况.此时你是怎么操作的呢?逐一SSH登录每个服务器,使用git拉下代码,然后运行?代码修改了,于是又要一个服务器一个服务器登录上去依次更新? 有时候爬虫只需要在一个服务器上面运行,有时候需要在200个服务器上面运行.你是怎么快速切换的呢?一个服务器一个服务器登录上去开关?或者聪明一点,在Redis里面设置一个可以修改的标记,只有标记对应的服务器上面的爬虫运行? A爬虫已经在所有服务器上面部署了,现在又做了一个B爬虫,你是不是又得依次

Docker使用Swarm组建集群的方法

Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令.目前,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具.它可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络. Docker 使用 Swarm 可以很方便的在多个主机上创建容器集群,并且容器之间可以跨主机网络通信. Swar

详解基于docker-swarm搭建持续集成集群服务

前言 本文只为自己搭建过程中的一些简单的记录.如果实践中有疑问,可以一起探讨. 为了能在本机(macOS)模拟集群环境,使用了vb和docker-machine.整体持续集成的几个机器设施如下: 1.服务节点:三个manager节点,一个worker节点.manager需要占用更多的资源,manager配置尽量高一些.swarm的manager节点的容错率是 (N-1)/2 .N是manager节点数.也就是如果有3个manager,那就能容忍一个manager节点挂掉.官方的算法说明:Raft

Docker的安装方法及运行Docker Swarm模式的使用

Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 概要 docker就给简单介绍这么多,这里主要说说docker swarm. docker engine本身只提供了容器技术,没有解决集群环境下的容器编排和通信.docker swarm是一个容器编排管理工具,docker-engine在1.12版本之后集成了docker

Docker Swarm实现服务的滚动更新的示例代码

一.什么是Docker Swarm? Docker Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源.Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些. Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创

Docker Swarm从部署到基本操作

关于Docker Swarm Docker Swarm由两部分组成: Docker集群:将一个或多个Docker节点组织起来,用户就能以集群的方式进行管理: 应用编排:有一套API用来部署和管理容器: 官方资料:https://docs.docker.com/swarm/ 网络图 下图是个典型的Docker Swarm集群部署图,来自Docker官网: 接下来照着上图来搭建一个Docker Swarm集群. 准备工作 本次实战一共用到了5台机器,配置信息全部相同,如下: 操作系统:CentOS

轻松安装docker并运行docker swarm模式

概要 docker 1.12版本最大的改变在于集成了docker swarm,在docker engine下提供了 swarm 模式,这里主要说一下docker swarm. docker engine本身只提供了容器技术,没有解决集群环境下的容器编排和通信.docker swarm是一个容器编排管理工具,docker-engine在1.12版本之后集成了docker swarm,不需要再单独安装. docker swarm的功能,举个例子,有3台机器都安装了docker环境,称为3台docke

docker swarm如何在指定的node上运行指定的容器

描述问题 比如我们有worker1,worker2,worker3三个docker host另外加一个manager1(它是swarm的master)来管理它们. 如果在manager1上直接docker service create某一个容器的话,比如nginx容器,那么master会来决定挑哪一个node作为nginx容器的运行的host. 如果我要nginx容器只跑在worker1上面的话,应该怎么办呢? 解决方案 简单来说就是给每一个node打标签. docker node update

python每隔N秒运行指定函数的方法

本文实例讲述了python每隔N秒运行指定函数的方法.分享给大家供大家参考.具体如下: 这是一个类似定时器的效果,每隔指定的秒数运行指定的函数,采用线程实现,代码简单实用. 复制代码 代码如下: import os import time def print_ts(message):     print "[%s] %s"%(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), message) def run(

在Ubuntu 16.04上用Docker Swarm和DigitalOcean创建一个Docker容器集群的方法

介绍 Docker Swarm是用于部署Docker主机集群的Docker本地解决方案.您可以使用它来快速部署在本地计算机或受支持的云平台上运行的Docker主机集群. 在Docker 1.12之前,设置和部署Docker主机集群需要使用外部键值存储(如etcd或Consul)来进行服务发现.但是,使用Docker 1.12,不再需要外部发现服务,因为Docker提供了一个内置的键值存储,可以开箱即用. 在本教程中,您将了解如何使用Docker 1.12上的Swarm功能部署一组Docker机器

Docker Swarm入门实例详解

Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令.目前,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具.它可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络. 1. Swarm 认识 Swarm 是目前 Docker 官方唯一指定(绑定)的集群管理工具.Docker 1.