前段时间我换了一台电脑,打算重新弄一个方便一点的开发环境,于是用 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
喜欢折腾的可以拿去折腾,如果有什么不明白的,可以直接在评论区留言或者直接给我发信息。
赞赏微信赞赏
支付宝赞赏