使用Docker Compose部署WordPress遇cURL error 28问题求助
Docker Compose部署WordPress遇cURL error 28及REST API超时问题
执行主题导入等操作时触发cURL error 28,站点健康检查提示REST API请求超时,具体信息如下:
REST API Endpoint: http://192.168.0.4:8000/wp-json/wp/v2/types/post?context=edit
REST API Response: (http_request_failed) cURL error 28: Connection timed out after 10002 milliseconds
当前使用的docker-compose.yml配置:
version: '3.3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: ******* MYSQL_DATABASE: wordpressdb MYSQL_USER: ******* MYSQL_PASSWORD: ******* wordpress: depends_on: - db image: wordpress:latest volumes: - ./php.ini:/usr/local/etc/php/conf.d/uploads.ini ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: ******* WORDPRESS_DB_PASSWORD: ******* WORDPRESS_DB_NAME: wordpressdb volumes: db_data:
通过内网IP192.168.0.4:8000访问后台管理面板,已尝试以下方案未解决:
- 移除所有插件
- 修改php.ini提升
memory_limit、post_max_size等参数 - 在
functions.php中添加超时回调过滤函数
解决方案尝试
1. 统一WordPress内部与外部访问URL
WordPress内部调用REST API时,若使用外部内网IP,容器可能无法直接访问。需配置内部访问地址:
- 在
docker-compose.yml的wordpress服务环境变量中添加:
或进入后台设置-常规,将「WordPress地址(URL)」「站点地址(URL)」改为WORDPRESS_SITE_URL: http://wordpress:80 WORDPRESS_HOME: http://wordpress:80http://wordpress:80,外部访问仍用192.168.0.4:8000不受影响。
2. 验证容器内部网络连通性
- 进入wordpress容器,测试内部访问REST API:
若无法访问,重建Docker网络:docker exec -it <wordpress容器名> curl http://wordpress:80/wp-json/wp/v2/types/post?context=editdocker-compose down docker network rm <项目目录名_default> # 默认网络名是项目目录加_default docker-compose up -d
3. 确保PHP超时参数生效
在挂载的php.ini中补充以下参数,覆盖默认超时限制:
max_execution_time = 300 max_input_time = 300 default_socket_timeout = 300 curl_timeout = 300
修改后重启容器:docker-compose restart wordpress
4. 禁用IPv6避免网络异常
在docker-compose.yml中添加网络配置禁用IPv6:
version: '3.3' services: # 原有服务配置不变 networks: default: enable_ipv6: false driver: bridge
5. 检查主机防火墙规则
确认主机防火墙未拦截容器内部的回环请求,或未限制容器间的网络通信,必要时临时关闭防火墙测试是否恢复正常。
内容的提问来源于stack exchange,提问作者A. Mair
相关产品推荐
相关产品推荐

