angular - 在多容器docker-compose设置中,我应该添加什么作为api地址?

标签 angular docker docker-compose

我有一个简单的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内部桥接网络中的浏览器调用的。
enter image description here
仅应将Docker containers矩形中的容器与容器名称一起调用。

关于angular - 在多容器docker-compose设置中,我应该添加什么作为api地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59350343/

相关文章:

html - Angular 2 - CSS 背景颜色不起作用

ruby-on-rails - 如何修复 bundler 在 docker 容器中找不到 Rails

node.js - Docker - 如何等待容器运行

javascript - 如何使用 jsonp 请求获取 json

angular - Angular2 EventEmitter 我做错了什么?

django - docker 中主机的 localhost 和 postgres 之间的区别

jquery - Grafana 通过 AJAX 没有响应

haskell - 如何将 Haskell Stack 与 Docker Compose 结合使用?

javascript - Angular 构建失败,找不到模块

javascript - Docker 本地 js 文件 IO 错误