Docker搭建WordPress
使用docker-compose搭建WordPress,添加Nginx反向代理和https配置,增大文件上传限制。配置四个容器:mysql、phpmyadmin、wordpress和nginx。提供Nginx配置文件进行站点访问控制和https设置。

Docker-compose来搭建WordPress
使用Docker-compose来搭建WordPress
开始搭建
下载安装docker和docker-compose
大家最好参考官网的方法, 只需要一个脚本就可以了!
创建一个目录
这是为了, 我们把所有的内容都放到一起.
mkdir wordpress && cd wordpress && touch docker-compose.yml && mkdir volumes
创建yaml文件
yaml文件, 将指导如何创建容器:
version: "3.9"
services:
db:
image: mysql
volumes:
- /share/Container/container-station-data/Mount/wordpress/mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: kingdo
MYSQL_PASSWORD: password
wordpress:
depends_on:
- db
image: wordpress
volumes:
- /share/Container/container-station-data/Mount/wordpress/wordpress:/var/www/html
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpress
ports:
- 10084:80
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 10084:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- /share/Container/container-station-data/Mount6/wordpress:/var/www/html
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- /share/Container/container-station-data/Mount6/db:/var/lib/mysql
volumes:
wordpress:
db:
在这个yaml中, 我们启动了四个容器:
- mysql, 数据库
- phpmyadmin, 数据库管理软件
- wordpress, 网站站点
- nginx, 反向代理
配置nginx
我们需要在./volumes/nginx/conf.d
中准备两个文件:
一个是htts的证书文件, 我是在腾讯云中申请的, 过程并不复杂, 就不展开了!
一个是Nginx的配置文件, 我的配置是:
server {
listen 80;
listen [::]:80;
server_name kingdo.club;
client_max_body_size 1024M;
sendfile on;
location / {
return 301 https://$host$request_uri;
}
location ^~ /xsfw/ {
root /usr/share/nginx/html;
add_header content-type "text/html";
index index.html index.htm;
}
}
server {
listen 443 ssl;
server_tokens off;
keepalive_timeout 5;
root /usr/share/nginx/html;
index index.html;
server_name kingdo.club;
ssl_certificate /etc/nginx/conf.d/certs/kingdo.club_bundle.crt;
ssl_certificate_key /etc/nginx/conf.d/certs/kingdo.club.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
client_max_body_size 1024M;
sendfile on;
location / {
proxy_pass http://wordpress;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
location = /MP_verify_V6hDvkp9FnFJLodc.txt {
root /usr/share/nginx/html;
}
location ^~ /xsfw/ {
root /usr/share/nginx/html;
add_header content-type "text/html";
index index.html index.htm;
}
location ^~ /resources/ {
root /usr/share/nginx/html;
index index.html index.htm;
}
location ^~ /BigXXY/ {
root /usr/share/nginx/html;
index index.html index.htm;
}
location ^~ /3D-Photo-Album/ {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
这里面有一写比较重要的配置. 首先我们定义了两个server, 分别监听80和443端口, 表示http和tpps.
http中, 除uri以 /xsfw/
开头之外, 全部转发到https中! 因为这个 /xsfw/
是我给女朋友写的, 而这个必须是http的, 因此我保留了这个配置!
https中, 前面一大部分属于配置ssl, 需要将路径修改称自己的! 其他的不需要动, 也可以不需要懂, 反正是我抄的!
后面两个配置是增大nginx的上传文件大小限制, 这个非常重要, 不然你上传大文件的时候, 会失败, 因为我们是通过nginx进行反向代理, 因此我们需要同时修改nginx和worepress的上传文件限制.
后面的location /
是方向代理的部分, 将流量转发到wordpress中!
再后面的几个location
就是静态资源了.
启动容器
docker-compose up -d
-d表示在后台运行. 这样就完成了!
修改文件大小
我们除去在nginx中, 修改了上传文件的大小配置, 还需要修改wordpress的, 这个修改比较容易, 只需要修改wordpress根目录中的.htaccess即可:
php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 512M
修改站点的地址
迁移
一劳永逸, 你所有的数据都会保存在我们指定的文件中, 你只需要将文件放到任意一个服务器上, 然后再执行一次docker-compose, 就可以恢复你的网站, 这样的话, 我们就可以轻松的实现迁移和备份.
但是, 迁移之后, 需要注意, 需要保证Wordpress根目录的所属用户以及用户组保持不变, 否则安装插件, 主题等都会出现错误!
可以直接将用户和用户组以 **-R
参数递归的修改为:**www-data
后记
我的网站目前就是这样搭建起来的:
Kingdo Station - 好好活就是有意义的事,有意义的事就是好好活kingdo.club/