我開發了一個Angular App,它通過Nginx與UWSGI Flask Api進行通信。目前我有3個容器(Angular [web_admin],Api [api_admin],Nginx [nginx])Docker-Compose - 與「內部」Api通信。
當我在我的開發機器上運行它時,通信工作正常。角度請求通過url:http://localhost:5000和api響應很好,一切正常。
但是,當我將它部署到我的生產服務器時,我注意到應用程序無法正常工作,因爲端口5000未在我的防火牆中打開。
我的問題很簡單,我如何通過內部網絡調用角容器,調用api容器,而不是從外部調用它?
version: '2'
services:
data:
build: data
neo4j:
image: neo4j:3.0
networks:
- back
volumes_from:
- data
ports:
- "7474:7474"
- "7473:7473"
- "7687:7687"
volumes:
- /var/diariooficial/neo4j/data:/data
web_admin:
build: frontend/web
networks:
- front
- back
ports:
- "8001:8001"
depends_on:
- api_admin
links:
- "api_admin:api_admin"
volumes:
- /var/diariooficial/upload/diario_oficial/:/var/diariooficial/upload/diario_oficial/
api_admin:
build: backend/api
volumes_from:
- data
networks:
- back
ports:
- "5000:5000"
depends_on:
- neo4j
- neo4jtest
volumes:
- /var/diariooficial/upload/diario_oficial/:/var/diariooficial/upload/diario_oficial/
nginx:
build: nginx
volumes_from:
- data
networks:
- back
- front
ports:
- "80:80"
- "443:443"
volumes:
- /var/diariooficial/log/nginx:/var/log/nginx
depends_on:
- api_admin
- web_admin
networks:
front:
back:
嘿安迪,謝謝你的迴應。我在Nginx中使用DNS名稱,它工作正常,但我不知道爲什麼,角度不會轉換DNS名稱。 $ http.get(__ env.apiUrl +'/ websites') 選項http:// api_admin:5000/auth/login net :: ERR_NAME_NOT_RESOLVED –
這是從瀏覽器JavaScript代碼中訪問的嗎?在這種情況下,請求來自Docker網絡之外。你必須提供一種在運行時配置'__env.apiUrl'的方法。這聽起來像你的問題類似於http://stackoverflow.com/a/42938882/684908。在這種情況下,您的URL將是Docker主機的IP地址(例如,在帶有Docker Machine的筆記本電腦上,我的Docker主機爲192.168.99.100)。 –