Fab*_*bry 2 rest docker docker-compose angular
我有3个简单的微服务(mysql,apirest,gui),我开始使用docker-compose:
version: '3.2'
services:
mysql:
image: mysql/mysql-server:5.6
container_name: mysql
restart: always
volumes:
- mysql:/var/lib/mysql/data
ports:
- "3306:3306"
networks:
- mynetwork
deploy:
mode: replicated
replicas: 1
environment:
- MYSQL_ROOT_PASSWORD=mypwd
- MYSQL_USER=myuser
- MYSQL_PASSWORD=myuserpwd
- MYSQL_DATABASE=my-db
apirest:
image: .....apirest:latest
container_name: apirest
restart: always
volumes:
- apirest:/apirest/tmp
ports:
- "30000:3000"
networks:
- mynetwork
deploy:
mode: replicated
replicas: 2
gui:
image: ......gui:latest
container_name: gui
restart: always
links:
- apirest
ports:
- "34200:4200"
networks:
- mynetwork
networks:
mynetwork:
volumes:
apirest:
mysql:
Run Code Online (Sandbox Code Playgroud)
在MySQL的和apirest微服务没有问题可以进行通信(我可以连接到我的数据库apirest使用的MySQL作为主机名。
但是,当我尝试使用apirest作为主机名执行http请求(角度)时,我在gui微服务中收到以下错误:
无法加载资源:net :: ERR_NAME_NOT_RESOLVED
从gui微服务中,我可以ping apirest:
docker exec -it gui ping apirest
--- apirest ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.069/0.203/0.338 ms
Run Code Online (Sandbox Code Playgroud)
如果我使用公共服务器地址(http:// serverip:30000 / api / test)来执行http请求而不是apirest,则没有问题,http请求成功。
我究竟做错了什么??
谢谢
AJAX请求是浏览器请求,而不是服务器端请求,并且您的浏览器不是mynetwork的一部分。发出ajax请求(客户端浏览器必须是公共域或具有服务节点端口的映射主机文件)。您仍然需要在浏览器主机中映射主机文件,或者在gui代码中使用带有服务节点端口的完整url。
如果您想避免使用端口,在我使用Nginx的情况下,代理是公开服务的最佳方法
GUI --- ajax请求(浏览器到服务器请求)----> PROXY(NGINX)---(服务器到服务器)-> apirest
| 归档时间: |
|
| 查看次数: |
1754 次 |
| 最近记录: |