我有一个简单的2容器docker-compose设置。前端(Angular)和后端(nestjs / express)。
这是我的docker-compose(开发)
version: "3.3"
services:
db:
image: 'postgres:10-alpine'
container_name: 'postgresnew'
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=4321
- POSTGRES_DB=bleh
volumes:
- pgdata:/var/lib/postgresql/data
frontend:
build: ./frontendapp
ports:
- 4001:4200
volumes:
- ./frontendapp:/app
- /app/node_modules/
backend:
build: ./backendapp
ports:
- 4000:8080
volumes:
- ./backendapp:/app
- /app/node_modules/
env_file:
- .env
volumes:
pgdata:
现在,暴露了正确的端口后,前端可以使用localhost:4000地址轻松访问后端,如前端环境所示
const x = 'http://localhost:4000';
export const environment = {
production: false,
API_USERSERVICE: x + "/api/user",
API_PROJECTSERVICE: x + "/api/project",
API_TASKSERVICE: x + "/api/task",
API_PGROUPSERVICE: x + "/api/pgroup",
API_KPISERVICE: x + "/api/kpi",
API_FUNDRAISINGSERVICE: x + "/api/fundraising"
};
但我希望它使用docker的内部网桥网络进行连接;而不是
localhost:4000
,我不确定使用什么作为它的地址...我尝试使用const x = 'http://twrapp_backend_1'
这是它的名称,但是遇到了CORS错误,此外,似乎它正在尝试访问以该名称命名的网站...我也尝试过const x = 'twrapp_backend_1'
...我用google搜索了一周,不确定是在docker端还是在 Angular 端出错了。救命!
最佳答案
不可以,您无法通过Docker的内部网桥网络请求后端服务。因为您对后端服务的请求是由不在docker内部桥接网络中的浏览器调用的。
仅应将Docker containers
矩形中的容器与容器名称一起调用。
关于angular - 在多容器docker-compose设置中,我应该添加什么作为api地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59350343/