我的应用程序有三个容器:db,frontend-web(React),backend-api 如何在frontend-web
中获取我的后端api地址这是我的撰写文件
version: '2'
services:
db:
image: postgres
ports:
- "5432:5432"
web:
build: .
stdin_open: true
volumes:
- .:/usr/src/app
ports:
- "3000:3000"
environment:
- API_URL=http://api:8080/
links:
- api
depends_on:
- api
api:
build: ./api
stdin_open: true
volumes:
- ./api:/usr/src/app
ports:
- "8080:3000"
links:
- db
depends_on:
- db
我无法获取api和process.env.API_URL
的地址答案 0 :(得分:0)
将容器名称添加到服务描述中,如下所示:
api:
build: ./api
container_name: api
stdin_open: true
volumes:
- ./api:/usr/src/app
ports:
- "8080:3000"
links:
- db
depends_on:
- db
然后,您可以使用容器名称作为主机名进行连接。见https://docs.docker.com/compose/compose-file/#/containername
答案 1 :(得分:0)
我承认web
容器中的服务器只提供静态htmls而不是api
容器服务器的代理。
因此,一旦将端口映射到主机,就可以使用主机名称/ ip来查找api服务器。
如果您的主机名称为app.myserver.dev
,则可以在API_URL
env var中使用下面的配置,docker将为您完成工作:
web: build: . stdin_open: true volumes: - .:/usr/src/app ports: - "3000:3000" environment: - API_URL=http://app.myserver.dev:8080/ links: - api depends_on: - api