wordpress-docker
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- wordpress_data:/var/www/html
depends_on:
- wordpress
volumes:
db_data:
wordpress_data:
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass wordpress: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 run --name mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=wordpress -d mysql:5.7
docker run --name wordpress --link mysql:mysql -e WORDPRESS_DB_HOST=mysql:3306 -e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=wordpress -e WORDPRESS_DB_NAME=wordpress -v "$PWD/wordpress":/var/www/html -d wordpress:latest
docker run --name php-fpm --link mysql:mysql --link wordpress:wordpress -v "$PWD/wordpress":/var/www/html -d php:7.4-fpm
首先创建nginx.conf文件(同上),然后运行:
docker run --name nginx --link wordpress:wordpress --link php-fpm:php-fpm -p 80:80 -v "$PWD/nginx.conf":/etc/nginx/conf.d/default.conf -v "$PWD/wordpress":/var/www/html -d nginx:latest
http://localhost
(如果使用自定义端口,如8000,则访问 http://localhost:8000
)如果遇到文件权限问题,可以执行:
docker exec -it wordpress chown -R www-data:www-data /var/www/html
确保数据库容器已启动,并且WordPress容器中配置的环境变量正确。
检查PHP-FPM容器是否正常运行,以及Nginx配置中fastcgi_pass是否正确指向PHP-FPM容器。
修改配置后需要重启相关容器:
docker-compose restart nginx
# 或者手动方式
docker restart nginx
这种方法可以快速搭建一个WordPress环境,适合开发和测试使用。生产环境可能需要更复杂的配置和安全性考虑。