在docker-compose服务之间进行通讯时遇到问题

我有以下docker-compose文件:

version: "3"

services:

scraper-api:

build: ./ATPScraper

volumes:

- ./ATPScraper:/usr/src/app

ports:

- "5000:80"

test-app:

build: ./test-app

volumes:

- "./test-app:/app"

- "/app/node_modules"

ports:

- "3001:3000"

environment:

- NODE_ENV=development

depends_on:

- scraper-api

其中构建以下内容Dockerfile

scraper-api(一个python flask应用程序):

FROM python:3.7.3-alpine

WORKDIR /usr/src/app

COPY requirements.txt ./

RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "./app.py"]

test-appreact针对api 的测试应用程序):

# base image

FROM node:12.2.0-alpine

# set working directory

WORKDIR /app

# add `/app/node_modules/.bin` to $PATH

ENV PATH /app/node_modules/.bin:/app/src/node_modules/.bin:$PATH

# install and cache app dependencies

COPY package.json /app/package.json

RUN npm install --silent

RUN npm install react-scripts@3.0.1 -g --silent

RUN npm install axios -g

# start app

CMD ["npm", "start"]

诚然,关于Docker网络,我是一个新手,但我正在尝试让该react应用程序与Docker 通信scraper-api。例如,scraper-

api具有以下端点:/api/top_10。我尝试了以下网址的各种排列: http://scraper-

api:80/api/test_api。他们都没有为我工作。

我一直在清理互联网,却找不到真正的解决方案。

回答:

React应用程序在最终用户的浏览器中运行,后者根本不知道这种“ Docker”是存在的,也不知道任何Docker

Compose网络设置。对于碰巧是由Docker托管的浏览器应用程序,需要将其配置为使用 主机的 DNS名称或IP地址以及后端服务的已发布端口。

一种常见的设置(Docker或其他方式)是将浏览器应用程序和后端应用程序都放置在反向代理之后。在这种情况下,您可以使用不带主机名的相对URL,例如/api/...,它们将被解释为“相同的主机和端口”,从而完全绕开了此问题。

以上是 在docker-compose服务之间进行通讯时遇到问题 的全部内容, 来源链接: utcz.com/qa/421120.html

回到顶部