angular - 通过docker容器调用rest API
问题描述
我已经使用spring boot和frontEnd使用angular 8开发了后端Rest API 我的问题是我已经通过docker-compose在同一台服务器中部署了后端和前端我需要一种方法来通过docker容器和网络进行角度调用rest API而不暴露我的后端休息API我试图用它的容器名称以角度调用后端,但它不起作用来自角度http://shop_soofybackendservice/api/departments的API链接示例
version: '3'
services:
database:
image: mysql:8.0.15
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: dbname
volumes:
- databasevolume:/var/lib/mysql
networks:
- databasenetwork
deploy:
mode: replicated
replicas: 1
labels: [ database=MYSQL_DATABASE ]
soofybackendservice:
image: tomcatsoofybackend:latest
#build:
# context: ./onlineshopping/soofy-trade
# dockerfile: Dockerfile
environment:
mysqlhost: shop_database
mysqlupassword: 123456
mysqluname: root
imagesPath: /home/ubuntu/images
volumes:
- imagesvolume:/home/ubuntu/images
ports:
- 81:8080
depends_on:
- database
networks:
- databasenetwork
- backendnetwork
deploy:
mode: replicated
replicas: 1
labels: [ backend=backendWep ]
#tomcatsoofyfrontend
#http://backend.medodolphin.com/
soofyfrontendservice:
image: mealfrontend:latest
#build:
# context: ./onlineshopping/soofy-frontend
# dockerfile: Dockerfile
ports:
- 82:80
depends_on:
- database
networks:
- backendnetwork
deploy:
mode: replicated
replicas: 1
labels: [ frontend=frontendWeb ]
volumes:
databasevolume:
imagesvolume:
networks:
databasenetwork:
backendnetwork:
解决方案
服务之间通信的正确 URL(例如tomcatsoofyfrontend
调用soofybackendservice
)是 docker-compose 中服务的名称。在你的情况下它是soofybackendservice
,因此端点是http://soofybackendservice:8080/api/departments
如果您的应用程序正在从远程浏览器/主机调用端点,那么您需要调用http://<<ip or the domain name of docker host>>:81/api/departments
.
推荐阅读
- puppeteer - Puppeteer:打开隐身上下文时使用第一个新页面
- python - 如何对数据框中列表中的项目进行值计数
- google-play - Google Play 控制台从发布概览中删除应用
- graphql - Gatsby / GraphQL - 从外部 API 获取数据。设置 gatsby-node.js 但 SyntaxError: Unexpected token 'export'
- google-sheets - 相同的查询,不同的行为
- java - Java如何测试无效方法的文件实用程序?
- php - phpMyAdmin 未正确加载
- google-apps-script - 获取当前用户的语言设置总是返回'en-US'
- python - Discord.py 关闭后运行
- python - 我没有在我的代码中要求一个参数,但它也说“all() 需要正好 1 个参数,0 给定”,我不知道我应该做什么