Docker部署WordPress:数据库连接失败及最简部署方案咨询
Docker部署可编辑代码的WordPress最简方案
问题背景
我尝试用Docker部署WordPress。用docker run wordpress能正常运行,但这种方式没法获取数据库权限、编辑代码,满足不了学习插件/模板开发的需求。使用官方文档的docker-compose.yml配置后,容器启动正常,但访问localhost:8080时出现Error establishing a database connection错误。
执行docker-compose时的控制台输出:
[+] Running 11/11 ⠿ db Pulled 27.3s ⠿ 7b1a6ab2e44d Already exists 0.0s ⠿ 034655750c88 Pull complete 4.3s ⠿ f0b757a2a0f0 Pull complete 4.7s ⠿ 5c37daf8b6b5 Pull complete 5.0s ⠿ b4cd9409b0f6 Pull complete 5.1s ⠿ dbcda06785eb Pull complete 6.2s ⠿ a34cd90f184c Pull complete 6.4s ⠿ fd6cef4ce489 Pull complete 7.1s ⠿ 3cb89a1550ea Pull complete 21.7s ⠿ df9f153bd930 Pull complete 21.7s [+] Running 5/5 ⠿ Network test-wp_default Created 0.1s ⠿ Volume "test-wp_db_data" Created 0.0s ⠿ Volume "test-wp_wp_data" Created 0.0s ⠿ Container test-wp-wordpress-1 Started 0.7s ⠿ Container test-wp-db-1 Started 0.7s
最简解决方案
修改后的docker-compose.yml配置
这个配置解决了数据库连接问题,同时支持本地编辑WordPress代码:
version: '3.8' services: wordpress: image: wordpress:latest ports: - "8080:80" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wp_user WORDPRESS_DB_PASSWORD: wp_pass WORDPRESS_DB_NAME: wp_db volumes: # 挂载wp-content到本地,直接编辑插件/模板 - ./wp-content:/var/www/html/wp-content # 若需编辑核心代码,替换为:- ./wordpress:/var/www/html depends_on: db: condition: service_healthy db: image: mysql:8.0 environment: MYSQL_DATABASE: wp_db MYSQL_USER: wp_user MYSQL_PASSWORD: wp_pass MYSQL_ROOT_PASSWORD: root_pass volumes: - db_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-proot_pass"] interval: 5s timeout: 5s retries: 5 volumes: db_data:
操作步骤
- 创建空文件夹(如
wp-docker),进入该目录 - 创建上述
docker-compose.yml文件 - 执行命令:
docker-compose up -d - 访问
localhost:8080完成WordPress初始化 - 本地
wp-content文件夹会同步容器内内容,直接在本地编辑插件、模板文件,容器内实时生效
方案说明
- 解决数据库连接问题:通过
healthcheck检测数据库是否就绪,确保WordPress在数据库完全启动后再启动,避免连接失败 - 支持代码编辑:将
wp-content挂载到本地,直接在本地编辑插件和模板;若需修改核心代码,可挂载整个/var/www/html目录 - 简化配置:使用最新版镜像,配置项简洁,无冗余设置,适合学习开发使用
内容的提问来源于stack exchange,提问作者wtsuport
相关产品推荐
相关产品推荐

