Docker ReactJS与其他容器的通信

时间:2019-03-16 10:50:09

标签: reactjs docker

我似乎无法使用Docker VPN从网站向我的后端发送http请求。

我有这个docker-compose文件:

version: '3.7'

services:
  frontend:
    ports:
      - 5001:5001
    build: "./..."
  restapi:
    build: "./.../"
    command: gunicorn rest.wsgi:application --bind 0.0.0.0:8000
    expose:
      - 8000
    depends_on:
      - db
  db:
    image: postgres:10.5-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/

现在,我正在从我的响应前端发送发帖请求

axios.post('http://restapi:8000/rest/', {data}, {headers})

->请求只是失败而从未到达我的restapi服务

如果我将我的容器放入容器docker exec -it "container-id" sh中,然后向URL发送了一个wget(卷曲)请求,则一切正常。

我假设,一旦网站在浏览器中运行,我就离开了容器,因此离开了docker的VPN?

但是如何从React前端跨容器发出请求?

1 个答案:

答案 0 :(得分:2)

您的容器可以通过服务名称彼此看到。但是浏览器正在尝试以客户端身份访问。因此,是的,当您部署到VM时,一切都会正常。要测试本地部署,客户端需要知道restapi所在的位置,因此您需要将其包含在主机中:

    <docker-ip or localhost>     restapi

更新:如果后端在前端中也可用,请使用相对路径。

  axios.post('/rest/', {data}, {headers})