使用docker-compose部署使用nginx的WordPress

本文档详细介绍了如何在阿里云轻量应用服务器CentOS 7.3上,使用Docker和Docker Compose部署WordPress。首先,安装Docker和Docker Compose,接着配置docker-compose.yml和nginx.conf文件。通过执行docker-compose命令,启动包括mariadb、wordpress和nginx在内的多个容器,实现WordPress站点的部署。同时,提供了停止Docker Compose的命令,并给出了相关镜像和文档的链接供参考。

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
<think> 我们参考了上述引用内容,特别是引用[2]和引用[3]中关于使用Docker Compose部署WordPress的步骤。下面将提供一个清晰的、逐步的部署指南。请注意,我们将结合最佳实践和常见配置进行说明。 ### 使用Docker Compose部署WordPress的详细步骤 #### 1. 准备工作 - 确保已安装DockerDocker Compose。如果没有安装,请参考官方文档进行安装- 安装Docker: https://docs.docker.com/engine/install/ - 安装Docker Compose: https://docs.docker.com/compose/install/ - 创建一个项目目录,用于存放`docker-compose.yml`文件和其他相关文件。 #### 2. 创建`docker-compose.yml`文件 在项目目录中创建`docker-compose.yml`文件,并写入以下内容。这里我们使用一个典型的配置,包括WordPress服务和MySQL数据库服务。 ```yaml version: '3.8' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: your_mysql_root_password MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: your_mysql_password restart: always networks: - wordpress_net wordpress: depends_on: - db image: wordpress:latest ports: - "8080:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: your_mysql_password WORDPRESS_DB_NAME: wordpress volumes: - wordpress_data:/var/www/html networks: - wordpress_net volumes: db_data: wordpress_data: networks: wordpress_net: ``` **注意:** - 请将`your_mysql_root_password`和`your_mysql_password`替换为强密码。 - 这里我们使用了两个命名卷(`db_data`和`wordpress_data`)来持久化数据库和WordPress文件。 - 服务间通过自定义网络`wordpress_net`通信。 #### 3. 启动服务 在项目目录下运行以下命令启动服务: ```bash docker-compose up -d ``` - `-d`参数表示在后台运行。 - 首次运行会下载所需的镜像(mysql和wordpress),这可能需要一些时间。 #### 4. 验证服务 - 访问WordPress:在浏览器中输入`http://localhost:8080`(如果部署在本地服务器)或`http://<你的服务器IP>:8080`。 - 如果看到WordPress安装界面,则表示部署成功。 #### 5. 配置反向代理(可选) 如果你希望通过域名(如`www.example.com`)访问,并且使用80/443端口,可以配置Nginx反向代理。以下是一个简单的Nginx配置示例: 在Nginx的配置文件中(如`/etc/nginx/sites-available/example.com`)添加: ```nginx server { listen 80; server_name example.com; location / { proxy_pass http://localhost:8080; 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; } } ``` 然后重启Nginx: ```bash sudo systemctl reload nginx ``` #### 6. 停止和清理 - 停止服务(在项目目录下): ```bash docker-compose down ``` - 如果希望同时删除数据卷(持久化数据),则: ```bash docker-compose down -v ``` ### 注意事项 1. **安全性**:确保使用强密码,并且不要将`docker-compose.yml`文件中的密码直接暴露在公共仓库中。对于生产环境,考虑使用Docker secrets或环境变量文件来管理敏感信息。 2. **更新**:可以通过重新运行`docker-compose up -d`来更新服务(当有新的镜像可用时)。 3. **备份**:定期备份数据卷(位于Docker存储卷中)。 通过以上步骤,你应该能够成功使用Docker Compose部署WordPress。如果遇到问题,可以检查容器日志: ```bash docker-compose logs ``` §§相关问题§§ 1. 如何为Docker Compose中的服务设置环境变量文件? 2. 如何备份和恢复Docker卷中的WordPress数据? 3. 如何配置HTTPS(SSL/TLS)来保护WordPress站点? </think> ### 使用 Docker Compose 部署 WordPress 的详细步骤 #### 1. 安装 DockerDocker Compose ```bash # 安装 Docker(Ubuntu 示例) sudo apt update sudo apt install docker.io # 安装 Docker Compose sudo apt install python3-pip sudo pip3 install docker-compose # 验证安装 docker --version # 应返回 Docker 版本 docker-compose --version # 应返回 Compose 版本 ``` #### 2. 创建项目目录和配置文件 ```bash mkdir wordpress && cd wordpress touch docker-compose.yml ``` #### 3. 配置 `docker-compose.yml` 文件 ```yaml version: '3.8' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: your_mysql_root_password MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: your_mysql_password restart: always wordpress: depends_on: - db image: wordpress:latest ports: - "8080:80" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: your_mysql_password WORDPRESS_DB_NAME: wordpress volumes: - wordpress_data:/var/www/html restart: always volumes: db_data: wordpress_data: ``` > **参数说明**: > - `db`: MySQL 数据库服务 > - `volumes`: 持久化存储数据库和网站数据 > - `ports`: `8080:80` 表示主机 8080 端口映射到容器 80 端口 > - `environment`: 配置数据库连接参数(需替换 `your_xxx_password`) > - 完整配置参考:[官方文档](https://docs.docker.com/compose/compose-file/) #### 4. 启动服务 ```bash # 后台启动容器 docker-compose up -d # 查看运行状态 docker-compose ps ``` > 预期输出: > ``` > Name Command State Ports > -------------------------------------------------------------------------- > wordpress_db_1 docker-entrypoint.sh mysqld Up 3306/tcp > wordpress_wordpress_1 apache2-foreground Up 0.0.0.0:8080->80/tcp > ``` #### 5. 完成 WordPress 安装 1. 浏览器访问 `http://your-server-ip:8080` 2. 按向导设置: - 选择语言 → 填写站点信息 → 创建管理员账户 3. 完成安装后登录后台:`http://your-server-ip:8080/wp-admin` #### 6. 常见管理命令 ```bash # 停止服务(保留数据) docker-compose down # 停止并删除所有数据 docker-compose down -v # 查看实时日志 docker-compose logs -f # 更新容器镜像 docker-compose pull docker-compose up -d ``` #### 配置优化建议 1. **安全加固**: - 修改默认端口(如 `8080`→`8888`) - 使用强密码(建议 16 位含大小写+数字+符号) 2. **持久化备份**: ```bash # 备份数据卷 docker run --rm -v wordpress_wordpress_data:/source -v $(pwd):/backup alpine tar czf /backup/wordpress_backup.tar.gz /source ``` 3. **HTTPS 配置**: - 在 `docker-compose.yml` 中添加反向代理容器(如 Nginx- 使用 Let's Encrypt 自动签发证书 > 注意:首次启动时若出现数据库连接失败,等待 1-2 分钟重试(MySQL 初始化需要时间)[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值