本地 WordPress Docker 环境搭建

前段时间我换了一台电脑,打算重新弄一个方便一点的开发环境,于是用 docker compose 写了一套。

什么是 Docker?

我不太清楚现在站长们是不是都了解 Docker,为了避免有些人不了解,还是简单介绍一下

Docker 是一种开源的容器化平台,允许开发者将应用程序及其所有依赖项(库、环境变量、配置文件等)打包到一个标准化的单元中,称为"容器"。容器与虚拟机不同,它们共享主机操作系统内核,因此更加轻量级、启动更快且资源开销更小。Docker 提供了隔离的运行环境,确保了应用程序在不同环境中能够一致运行。

如果不太了解 Docker,可以简单认为这就是一个在你的电脑上运行的虚拟机。

什么是 Docker Compose?

由于运行 WordPress 需要搭建 php + mysql + nginx,因此需要多个容器环境。

Docker Compose 就是干这个用的,它可以定义和运行多容器,只需要用一个单独的 YAML 配置文件就可以定义整个应用栈的各个服务、网络配置、数据卷等,然后使用一条命令即可启动所有服务。

如果你也在用 Docker,那么可以用我提供的环境用于本地调试你的主题或插件。如果还没有用,强烈建议你了解一下 Docker。

用于本地的 WordPress 开发环境

将下面的文件保存为 docker-comcompose.yaml,放在一个你看的顺眼的文件夹中。


services:
  # Nginx 服务
  nginx:
    image: nginx:alpine
    container_name: lnmp_nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./www:/var/www/html
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/logs:/var/log/nginx
    depends_on:
      - php
    networks:
      - lnmp_network
  # PHP-FPM 服务 (包含常用扩展)
  php:
    build:
      context: .
      dockerfile: php.Dockerfile
    container_name: lnmp_php
    volumes:
      - ./www:/var/www/html
      - ./php/php.ini:/usr/local/etc/php/conf.d/custom.ini
    networks:
      - lnmp_network
  # MySQL 服务
  mysql:
    image: mysql:8.0
    container_name: lnmp_mysql
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: app_db
      MYSQL_USER: app_user
      MYSQL_PASSWORD: userpassword
    volumes:
      - ./mysql/data:/var/lib/mysql
    ports:
      - "3306:3306"
    networks:
      - lnmp_network
  # phpMyAdmin (可选)
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: lnmp_phpmyadmin
    depends_on:
      - mysql
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
    ports:
      - "8080:80"
    networks:
      - lnmp_network
networks:
  lnmp_network:
    driver: bridge

将下面的文件保存为 php.Dockerfile,放在 docker-compose.yaml 同级。


FROM php:8.2-fpm-alpine
# 安装常用扩展
RUN apk add --no-cache \
        freetype \
        libpng \
        libjpeg-turbo \
        freetype-dev \
        libpng-dev \
        libjpeg-turbo-dev \
    && docker-php-ext-configure gd \
        --with-freetype \
        --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql mysqli \
    && apk del --no-cache \
        freetype-dev \
        libpng-dev \
        libjpeg-turbo-dev
# 安装其他常用扩展
RUN docker-php-ext-install opcache && docker-php-ext-enable opcache
WORKDIR /var/www/html

如何启动

1. 下载 wordpress 源码到 www 目录

2. 将下面的配置保存为 app.conf,放在 nginx/conf.d 文件夹下。


server {
    listen 80;
    server_name localhost;
    root /var/www/html/wordpress;
    index index.php index.html;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /\.ht {
        deny all;
    }
}

最后执行:

docker compose up -d

如何停止

docker compose down

喜欢折腾的可以拿去折腾,如果有什么不明白的,可以直接在评论区留言或者直接给我发信息。

赞赏

微信赞赏支付宝赞赏

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注