使用docker-compose部署使用nginx的WordPress
1 概述
本站点使用Docker容器部署WordPress及其所需依赖,并使用Docker Compose管理多个容器
使用了以下镜像
- mariadb
- wordpress (php-fpm版)
- nginx
本文将介绍通过此方法搭建全新WordPress站点的方法,文中展示的配置文件需要根据自身环境进行修改
注意:尚未尝试从其他部署方法迁移到本方法的具体过程
尝试迁移前请备份原WordPress数据
2 部署环境
2.1 环境总览
- 阿里云轻量应用服务器 CentOS 7.3
- Docker v19.03.13
- Docker Compose v1.27.4
2.2 安装 Docker
获取并执行 get.docker.com 官方提供的安装脚本
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
检查Docker安装情况
docker --version
2.3 安装 Docker Compose
运行WordPress需要多个容器互相协作,因此使用Docker Compose整合这些容器
获取 Docker Compose 二进制文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
为他们开放执行权限
sudo chmod +x /usr/local/bin/docker-compose
如果正在使用 bash-completion,可以添加 docker-compose 命令的补全
sudo curl -L https://raw.githubusercontent.com/docker/compose/1.27.4/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
检查 Docker Compose 安装情况
docker-compose --version
3 部署准备
3.1 docker-compose.yml
Docker Compose 的核心即为 docker-compose.yml 配置文件,在包含此文件的目录下执行
docker-compose up
即可根据此配置文件启动数个Docker容器
用于部署WordPress的 docker-compose.yml 文件如下
version: "3.8"
services:
mariadb:
image: mariadb:10.5
# 映射mariadb容器内存放数据库数据的文件夹
# 其中包含了WordPress的核心数据信息
volumes:
- ./mysql:/var/lib/mysql
restart: always
# 下面的环境变量会在数据库数据文件夹已存在时失效
environment:
# root用户的初始密码
MYSQL_ROOT_PASSWORD: your_password
# 使用的数据库
MYSQL_DATABASE: your_database
# 使用的用户
MYSQL_USER: your_user
# 使用的用户的密码
MYSQL_PASSWORD: your_password
networks:
# 使用自己建立的Docker网络 并配置指定IP
wp_net:
ipv4_address: 172.16.1.4
wordpress:
depends_on:
- mariadb
image: wordpress:php7.4-fpm
# 其中包含了WordPress的本体文件
volumes:
- ./wordpress:/usr/src/wordpress
networks:
wp_net:
ipv4_address: 172.16.1.3
restart: always
environment:
# 数据库URL
WORDPRESS_DB_HOST: 172.16.1.4:3306
# 数据库用户
WORDPRESS_DB_USER: your_user
# 数据库密码
WORDPRESS_DB_PASSWORD: your_password
# 数据库名
WORDPRESS_DB_NAME: your_database
nginx:
image: nginx:latest
# ./wordpress 中包含了WordPress本体文件
# ./config 中包含Nginx配置文件
# ./key (可选) 中包含SSL证书 用于启用https连接
volumes:
- ./wordpress:/usr/share/nginx/html/wordpress
- ./config/nginx.conf:/etc/nginx/nginx.conf
- ./key:/key
# 对外开放 80 (http) 和 443 (https) 端口
ports:
- 80:80
- 443:443
networks:
wp_net:
ipv4_address: 172.16.1.2
restart: always
# 建立自己的网络 172.16.1.0/29 代表 172.16.1.1 到 172.16.1.8
networks:
wp_net:
ipam:
config:
- subnet: "172.16.1.0/29"
3.2 nginx.conf
需要自己提前建立 nginx 配置文件并映射到 nginx容器中
nginx配置中server块配置如下 此处的配置仅为简单的https配置 还可以优化
# 监听443端口上的https请求
server {
listen 443 ssl;
server_name {域名};
# ssl 支持
ssl_certificate /key/{证书公钥文件};
ssl_certificate_key /key/{证书私钥文件};
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
# 处理所有路径请求
location / {
root /usr/share/nginx/html/wordpress;
index index.php;
}
# 转发php请求到 wordpress 容器中的php-fpm
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_pass 172.16.1.3:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/src/wordpress$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
# 将http请求转发到https
server {
listen 80;
server_name blog.smileduster.com;
return 301 https://blog.smileduster.com$request_uri;
}
3.3 启动 Docker Compose
检查 nginx.conf 的路径是否和 docker-compose.yml 中的对应
随后转到 docker-compose.yml 所在目录下,执行
docker-compose up -d
即可启动一个新的WordPress系统,其他映射文件夹会自动创建
使用以下命令停止Docker Compose
docker-compose down
4 相关网站
docker hub https://hub.docker.com/
- 搜索需要的镜像
- 查看并选择需要的镜像版本
- 快速了解镜像的使用方法(需要挂载的目录、可提供的变量等等)
- 快速跳转到 Github 中该镜像的 Dockerfile
- MariaDB镜像 https://hub.docker.com/_/mariadb
- WordPress镜像 https://hub.docker.com/_/wordpress
- Nginx镜像 https://hub.docker.com/_/nginx
docker官方文档 https://docs.docker.com/
- 最靠谱的获取Docker相关教程的途径
- Docker Compose 安装 https://docs.docker.com/compose/install/
- Docker Compose 部署 WordPress 的简单例子
https://docs.docker.com/compose/wordpress/
nginx 官网 http://nginx.org/
- nginx配置起步教程 http://nginx.org/en/docs/beginners_guide.html
本文档详细介绍了如何在阿里云轻量应用服务器CentOS 7.3上,使用Docker和Docker Compose部署WordPress。首先,安装Docker和Docker Compose,接着配置docker-compose.yml和nginx.conf文件。通过执行docker-compose命令,启动包括mariadb、wordpress和nginx在内的多个容器,实现WordPress站点的部署。同时,提供了停止Docker Compose的命令,并给出了相关镜像和文档的链接供参考。
1623

被折叠的 条评论
为什么被折叠?



