You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下Create-React-App代理WordPress API失败求助

解决Docker环境下Create-React-App与WordPress API通信问题

你的推测完全正确——Docker容器各自拥有独立的网络命名空间,前端容器里的localhost指向容器自身,而非宿主机,所以无法访问到宿主机端口8000上的WordPress服务。下面是具体的解决步骤:

1. 修正前端代理配置(开发环境)

在前端的package.json中,将proxy字段从http://localhost:8000改为Docker Compose中WordPress服务的内部地址:

"proxy": "http://wordpress:80"

解释:

  • 在Docker Compose的同一个网络(wpsite)中,服务名称(这里是wordpress)可以直接作为域名解析到对应容器。
  • WordPress容器内部暴露的端口是80(而非宿主机映射的8000),所以要使用容器内部端口。

2. 优化前端Docker配置(可选但推荐)

你的前端Dockerfile里包含了RUN npm build,但开发环境下npm start并不需要预构建,建议移除这一步,避免不必要的构建时间:

FROM node:10-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install
ADD src /usr/src/app/src
ADD public /usr/src/app/public
CMD [ "npm", "start" ]

3. 生产环境适配(提前准备)

如果后续要部署生产环境的静态前端,Create-React-App的proxy配置不再生效(仅开发服务器可用),建议通过环境变量管理API地址:

  • 在docker-compose.yml的frontend服务中添加环境变量:
    frontend:
      # ... 其他配置
      environment:
        - REACT_APP_API_URL=http://wordpress:80
    
  • 在前端代码中使用环境变量发起请求(以axios为例):
    axios.get(`${process.env.REACT_APP_API_URL}/wp-json/wp/v2/pages`)
      .then(response => { /* 处理响应 */ })
      .catch(error => { /* 处理错误 */ })
    

4. 重启容器验证

修改配置后,重启前端容器:

docker-compose restart frontend

此时前端的请求会被正确代理到WordPress容器,应该能正常获取API数据了。

内容的提问来源于stack exchange,提问作者mctoothpick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:32:52