无法使用 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;
}
}
希望这些信息能够帮助遇到困难的人。
我正在尝试制作一个 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。这里
我将 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;
}
}
希望这些信息能够帮助遇到困难的人。