之前有写过用Docker来建立个WordPress站点(传送门),现在看来,由于之前没有用Docker Compose编排多个容器,那篇文章的搭建过程,显得略微繁琐。

这里使用工具Docker Compose快速部署WordPress站点,硬件环境为各种云主机、云服务器、独立服务器、VPS(OpenVZ除外)。

安装 Docker

有个一键脚本:

curl -sSL https://get.docker.com/ | sh

安装 Docker Compose

curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

上面代码第一行中,链接中1.15.0是Docker Compose的版本号,可以在这个链接找到并更换需要安装的版本。

docker-compose.yml 主模板文件

这一段东西对于新手来讲很多,忽略这一段也可以,我会在下面弄个简单的Shell脚本,一键执行就可以了。

一般新建立个目录(例如mywp),然后目录里编写docker-compose.yml文件,下面贴一个配置:

version: "2"
services:
  db:
    image: mariadb
    volumes:
      - ./data/db-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: ChangeMeIfYouWant
    restart: always
  wp:
    image: wordpress:php7.1
    volumes:
      - ./data/web:/var/www/html
    ports:
      - "80:80"
    links:
      - db:mysql
    environment:
      WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant
    restart: always
  • version,版本,1很古老了,目前一般都选择2
  • services,服务,上面配置创建了dbwp2个服务
  • imagedbwp都有各自依赖的镜像,镜像可以从远程拉取,也可以指定Dockerfile目录本地创建,具体写法这里不细说
  • volumes,类似与docker run命令中的-v,挂载文件或目录
  • ports,开放端口
  • links,链接容器;同时已经指定了容器间的依赖关系,会先启动链接的容器,随后启动自身
  • environment,设置变量
  • restart: always,常驻后台

volumes挂载了几个文件夹,所以在本地mywp文件夹中,新建mywp/data/db-datamywp/data/web

直接拷贝上面内容,然后在docker-compose.yml同级目录中运行:

docker-compose up -d

Docker Compose会自动拉取或构建需要镜像,然后启动。然后浏览器中打开IP地址或解析到该IP的域名,就能看到WordPress的安装界面。

2017-08-10_220558.png

一键部署 WordPress 的脚本

在Ubuntu 16.04 64bit中,海外服务器(国内有些地方下载不了GitHub中的文件)中执行成功,root账户登陆到服务器或VPS,分别执行下面3行即可:

curl -o Docker4WP.sh https://onebox.site/usr/uploads/2017/08/1374385195.txt
chmod +x Docker4WP.sh
./Docker4WP.sh

2017-08-10_220324.png

然后浏览器中打开该服务器或VPS的IP,或者解析到该IP的域名,出现WordPress的安装界面:

2017-08-10_220558.png

2017-08-10_220708.png

Docker4WP.sh 文件内容

Docker4WP.txt,或Docker4WP.sh,文件内容如下:

#!/bin/bash

## 安装 Docker
curl -sSL https://get.docker.com/ | sh

## 安装 Docker Compose
curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

## 创建所需目录
cd ~
mkdir mywp && cd mywp
mkdir -p ./data/{db-data,web}

## 写入文件
touch docker-compose.yml

cat > docker-compose.yml <<EOL
version: "2"
services:
  db:
    image: mariadb
    volumes:
      - ./data/db-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: ChangeMeIfYouWant
    restart: always
  wp:
    image: wordpress:php7.1
    volumes:
      - ./data/web:/var/www/html
    ports:
      - "80:80"
    links:
      - db:mysql
    environment:
      WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant
    restart: always
EOL

## 启动 Docker Compose
docker-compose up -d

上面文件内容可以拷贝,保存为sh文件,赋予权限chmod +x 文件,然后运行就好。