使用php-fpm + nginx + mariadb镜像部署wordpress

生命不息,折腾不止

原料

  • docker-ce
  • docker-compose

架构

文件结构

touch docker-compose.yml 
mkdir -p conf / 
mkdir -p db-data / 
mkdir -p logs / nginx / 
mkdir -p wordpress /
mkdir -p cert /
  • docker-compose.yml:docker -compose配置文件
  • conf /:存放nginx配置,如虚拟主机等。
  • db-data /:mysql数据的目录
  • logs /:应用程序日志目录,nginx,mariadb和php-fpm。
  • wordpress /:所有wordpress文件
  • cert /: 网站证书、私钥

配置

docker-compose.yml

version: '2'

services:

        nginx:
                image: nginx
                ports:
                        - '80:80'
                        - '443:443'
                volumes:
                        - ./conf:/etc/nginx/conf.d
                        - ./cert:/usr/local/nginx/conf
                        - ./logs/nginx:/var/log/nginx
                        - ./wordpress:/var/www/html
                links:
                        - wordpress
                restart: always
        mariadb:
                image: mariadb
                volumes:
                        - ./db-data:/var/lib/mysql
                environment:
                        - MYSQL_ROOT_PASSWORD=xxx
                restart: always
        wordpress:
                image: wordpress:4.9.6-php7.2-fpm
                volumes:
                        - ./wordpress:/var/www/html
                environment:
                        - WORDPRESS_DB_HOST=mariadb
                        - WORDPRESS_DB_PASSWORD=xxx
                links:
                        - mariadb
                restart: always

nginx.conf

根据你的需求配置,这里列出最基本的

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;

        return 301 https://$host;
}

server {
        listen [::]:443 ssl http2;
        listen 443 ssl http2;

        ssl on;

        ssl_certificate /usr/local/nginx/conf/example.com.crt;
        ssl_certificate_key /usr/local/nginx/conf/example.com.key;

        server_name example.com;

        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

        root /var/www/html;
        index index.php;

        access_log off;
        error_log /var/log/nginx/example-error.log;

        charset utf-8;

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass wordpress:9000;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_path_info;
        }
}

运行

docker-compose up -d

备份

以后备份和迁移直接拷贝wordpress/ 和db-data/ 两个目录就可以了

说点什么

avatar
  Subscribe  
提醒
Optimized with PageSpeed Ninja