How to easily create Wordpress website with Docker

在之前的文章中我有提到如何用传统的方法在Nginx服务器上host一个wordpress的网站。在很长一段时间里我也一直都以为搭建服务器必须先选择一个服务器的平台,然后再在这个服务器上按照教程一步一步的完成设置。因此很长一段时间里我都只能看着Bitwarden这样的程序流口水而不知道如何安装。(Bitwarden就是用Docker来deploy)后来横下心来慢慢研究怎么使用docker才发现这个东西实在是太强大而且太方便了,现在我只要是有新的project想要用,在不影响正在运行的服务器的情况下,只需要再加一个container,给他一个域名就可以完美运行。

安装Docker和Docker Compose

我假设看到本文的朋友知道如何用SSH进入服务器,如果不清楚的朋友可以参考我之前的文章前期准备工作

根据操作系统的不同,安装的方法有所区别,本文只讨论在Linux Debian系统中安装和使用。

安装Docker

我们直接使用官方的scipt来安装

1
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh

打完这两行命令系统就会自动的安装Docker在服务器上。

安装Docker Compose

我们直接从官方文档拿命令好出来安装就好

1
2
3
4
5
6
sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#给Docker Compose 执行权限
sudo chmod +x /usr/local/bin/docker-compose
#查看Docker和Docker Compose的版本
sudo docker version
sudo docker-compose version

安装Wordpress

这一个步骤我也会按照官方文档来,我会逐步讲解每一个命令的意思。网上很多的教程都是直接用docker run来做,我这里会用到docker-compose并尽量解答每一个步骤的意义。

我们先创建一个文件夹和docker-compose.yml文件。

1
2
3
mkdir docker
cd docker
touch docker-compose.yml

用nano或者vim打开docker-compose.yml之后可以把官方文档或者下面我的script放进去保存即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#Docker compose的版本,没什么特别的,这里用版本2也可以
version: '3.3'

#开始创建服务
services:
#创建数据库container
db:
#数据库用的是mysql 5.7版本因为最新版本的mysql有bug……这里也可以用mariadb代替
image: mysql:5.7
#volumes说的是把container里面(:后面的部分)的文件夹和服务器本机上的文件夹(:前面的部分)做对应,那么当container里面的这个文件夹内容改变之后服务器上的db_data文件夹也会改变
volumes:
- db_data:/var/lib/mysql
#如果container停止运作,自动重启
restart: always
#environment就是用户需要设置的内容,就这个container来说,我们需要定义mysql root的密码,我们为了wordpress创建的数据库名称,mysql的用户名还有密码
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

#创建Wordpress的container
wordpress:
#depends_on 定义了两个container之间的关系,wordpress只有在db开始运作之后才会开始运作
depends_on:
- db
#这里就是从网上数据库拿最新的镜像文件
image: wordpress:latest
#映射服务器端口到container内部的端口,假设服务器ip地址是192.168.1.0的话,我们可以通过192.186.1.0:8000访问container的80端口
#由于我使用的server不知道是什么原因不支持8000端口,因此这里我用80端口
# - "8000:80"
ports:
- "80:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
#官方的说法 The docker volume db_data persists any updates made by WordPress to the database. Learn more about docker volumes。
volumes:
db_data:

文件保存成功之后,我们只需要运行

1
sudo docker-compose up -d

等待服务器自动完成安装即可。安装完成,我们就可以直接去网站,如果看到Wordpress的Installation Wizard如下图就代表安装成功了。

success

下一篇文章我们会讲述如何使用Traefik来作为Reverse Proxy,在同一个服务器上host几个不同的网站。