链接的docker-compose制作http请求的容器
我一直在网上看了一会儿,还没有find解决scheme,我的问题是类似于这个StackOverflow问题的容器之间的Docker HTTP请求 。 但是这个答案已经是我在电脑里做的事了。 我正在提供我的docker-compose文件
version: "3" services: web: image: ecdavis15/tsn-web-server ports: - "3000:3000" links: - app app: image: ecdavis15/tsn-app-server ports: - "3030:3030" links: - mongo mongo: image: mongo ports: - "27017:27017" volumes: - ./data/db:/data/db
在我的Web容器中,我向http://app:3030/history
或者http://app:3030/rules
发出一个http get请求,但是我没有看到请求find应用程序容器的path。 我在浏览器控制台中看到的是net::ERR_NAME_NOT_RESOLVED
这个错误信息。 我不确定为什么http请求没有进入应用程序容器,因为它被链接到web容器。 有任何想法吗?
既然你做了一个Ajax调用,它将由客户端而不是服务器端的浏览器发送。 所以当你从<IP>:3000
打电话到API app:3030
,你的浏览器不知道应用是什么。 所以你有几件事你可以做
使用主机文件
/ etc / hosts文件
<IP> app
那么当你使用app:3000
浏览应用时, app:3030
会自动指向正确的地址。
使用JavaScript来确定APIurl
您可以使用JavaScript来获取您应该用于api的url
document.location.scheme + "://" + document.location.hostname + ":3030"
使用nginx
你可以创buildnginx反向代理
location / { proxy_pass http://localhost:3000; location /api { proxy_pass http://localhost:3030; } }
这将需要对代码文件进行一些更改,以便使用/api