【发布时间】:2019-04-21 22:01:34
【问题描述】:
问题
我有一个在容器内运行的反应应用程序。我需要请求一个 API(不是我的),它只接受公共 IP 地址。容器可以使用我机器的公网地址吗?
Docker 编写
version: '3'
services:
client:
container_name: client
build:
context: ./client
dockerfile: Dockerfile
volumes:
- './client:/usr/src/app'
- '/usr/src/app/node_modules'
ports:
- '3000:3000'
environment:
- NODE_ENV=development
- NODE_PATH=src
【问题讨论】:
-
你可以在 network_mode: host 下运行它,然后它会像主机一样在你的网络上接收一个 IP
-
react 发出的请求通常来自浏览器而不是 docker 容器,除非您是 SSR,因为如果您正在请求外部资源,则会通过您的 IP 进行路由。您很可能遇到 CORS 问题,而不是 docker 问题
-
我想过这一点,但 react 有一些东西可以代理你在开发中的请求。 (facebook.github.io/create-react-app/docs/…) @user1095118
-
@Mihai 我改为使用 network_mode 但它使用的是私有 IP 而不是我的公共 IP
-
@TiagoMartins 从你的容器外部看应该和你的主机一模一样(网络方面)。因此,如果您可以从您的主机连接到该 API,您也应该能够从您的容器连接。你检查过吗?
标签: docker docker-compose