无法使用 docker-compose 中的主机名访问 rails-api 后端

Can't access rails-api backend with hostname in docker-compose

我正在尝试制作一个 rails-api 后端并使用 docker-compose 对前端网站做出反应。但是我无法使用带有主机名的 axios 向 rails-api 后端发送获取请求(在 docker-compose 中说明)。我可以通过本地主机访问后端,但是当我将多容器应用程序部署到 aws elastic beanstalk 时,这将是一个问题(我假设)。

我正在尝试访问这样的值:

const value = await axios.get('http://website:3000/api/v1/examples');

这是我的 docker-compose.yml:

version: '2'

services:
  website:
    depends_on:
      - 'postgres'
      - 'redis'
    build: .
    ports:
      - '3000:3000'
    volumes:
      - '.:/app'
    env_file:
      - '.env'
  frontend:
    build:
      context: ./../atwo-react-2
      dockerfile: Dockerfile.dev
    ports:
      - '3001:3001'
    volumes:
      - ./../atwo-react-2:/app
    depends_on:
      - website

我收到了这个错误

GET http://website:3000/api/v1/examples net::ERR_NAME_NOT_RESOLVED 在 google 控制台

提前谢谢你。 欢迎任何帮助。

我设法从堆栈溢出中得到一些线索 post。这里 。 正如 post 中的答案所建议的那样,我必须设置一个 nginx 容器来代理(重定向)请求。

我将 axios 请求更改为:

const value = await axios.get('/api/v1/examples');

并制作了一个带有 default.conf 文件的 nginx 容器,如下所示:

upstream website {
    server website:3000;
}

upstream frontend {
    server frontend:3001;
}

server {
    listen 80;

    location / {
        proxy_pass http://frontend;
    }

    location /sockjs-node {
        proxy_pass http://frontend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

    location /api {
        proxy_pass http://website;  
    }
}

希望这些信息能够帮助遇到困难的人。