Docker Compose部署 Nginx+WordPress+Mariadb 挂载NFS存储

Docker Compose部署 Nginx+WordPress+Mariadb 挂载NFS存储

[begin] 环境说明 [/begin]由于我使用的是ESXi 服务器,可以创建多台虚拟机,为便于管理所以将一个项目单独建立一台虚拟机进行使用管理,且docker-compose 将Ngainx WordPress MariaDB 部署在一个Stacks中。

一、 概述

本站点使用 Dockerfile 创建属于自己的镜像,部署Nginx + WordPress + MariaDB 及其所需依赖,并使用Docker Compose管理多个容器,并将所有数据实现在NFS中存储。

使用了以下镜像

  • mariadb
  • wordpress (php-fpm版)
  • nginx

本文将介绍通过此方法搭建全新WordPress站点的方法,文中展示的配置文件需要根据自身环境进行修改

注意:尚未尝试从其他部署方法迁移到本方法的具体过程
尝试迁移前请备份原WordPress数据

二、部署环境

2.1 环境总览

  • Ubuntu 20.04.4
  • Docker v20.10.21
  • Docker Compose v1.29.2
  • Synology NAS

2.2 安装 Docker

执行安装脚本

bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)

检查Docker安装情况

docker --version

检查Docker Compose安装情况

docker-compose --version

更新系统

apt-get update

三、安装部署

3.1 docker-compose.yml 创建

version: "3.8"
services:
  nginx:
    image: nginx:latest
    # ./wordpress 中包含了WordPress本体文件
    # ./config 中包含Nginx配置文件
    # ./key (可选) 中包含SSL证书 用于启用https连接
    volumes:
      - nginx-html:/usr/share/nginx/html/
      - nginx-conf:/etc/nginx/conf.d/
      - nginx-key:/key
    # 对外开放 80 (http) 和 443 (https) 端口
    ports:
      - 80:80
      - 443:443
    networks:
      aoliyougei_net:
        ipv4_address: 172.16.1.2
    restart: always

  wordpress:
    depends_on:
      - mariadb
    image: wordpress:latest
    # 其中包含了WordPress的本体文件
    volumes:
      - wordpress-data:/var/www/html
    networks:
      aoliyougei_net:
        ipv4_address: 172.16.1.3
    restart: always
    environment:
      # 数据库URL
      WORDPRESS_DB_HOST: 172.16.1.4:3306
      # 数据库用户
      WORDPRESS_DB_USER: aoliyougei
      # 数据库密码
      WORDPRESS_DB_PASSWORD: aoliyougei
      # 数据库名
      WORDPRESS_DB_NAME: aoliyougei

  mariadb:
    image: mariadb
    # 映射mariadb容器内存放数据库数据的文件夹
    # 其中包含了WordPress的核心数据信息
    volumes:
       - mariadb-data:/var/lib/mysql
    restart: always
    # 下面的环境变量会在数据库数据文件夹已存在时失效
    environment:
      # root用户的初始密码
      MYSQL_ROOT_PASSWORD: password
      # 使用的数据库
      MYSQL_DATABASE: wordpress
      # 使用的用户
      MYSQL_USER: wprdpress
      # 使用的用户的密码
      MYSQL_PASSWORD: password
    networks:
      # 使用自己建立的Docker网络 并配置指定IP
      aoliyougei_net:
        ipv4_address: 172.16.1.4

  # phpmyadmin 管理数据库
  phpmyadmin:
    depends_on:
      - mariadb
    image: phpmyadmin
    restart: always
    environment:
      - PMA_HOST=mariadb
      - PMA_USER=root
      - PMA_PASSWORD=aoliyougei
    networks:
      # 使用自己建立的Docker网络 并配置指定IP
      aoliyougei_net:
        ipv4_address: 172.16.1.5

networks:
  aoliyougei_net:
 

3.2 Nginx配置

进入 Nginx 容器内

docker exec -it 容器名称 bash

更新及安装

/etc/nginx/conf.d 文件夹中创建配置文件 test.conf

erver {
    listen       443 ssl;
    listen  [::]:443 ssl;
    server_name  www.域名.com;

    ssl_certificate     /key/域名.com.crt;
    ssl_certificate_key /key/域名.com.key;

    location / {
                    proxy_set_header    X-FORWARDED-FOR $remote_addr;
                    proxy_set_header    X-FORWARDED-PROTO $scheme;
                    proxy_set_header    Host   $http_host;
                    proxy_pass          http://172.16.1.3:80;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}


Redis 插件配置

编辑 wp-config.php 文件>搜索>define( 'DB_COLLATE', ''); 在define( 'DB_COLLATE', ''); 后添加如下内容

/** Redis Object Cache */
define( 'WP_REDIS_CLIENT', 'credis' );
define('WP_REDIS_HOST', 'redis');
define('WP_REDIS_DATABASE', '0');
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容