首页 > 解决方案 > docker-compose:通过 Angular 应用程序“内部”访问后端服务

问题描述

我的目标如下:

  1. 通过全局访问前端(Angular)应用程序localhost:80
  2. localhost:3000仅通过前端应用“内部”(而非)访问后端(Express)应用

我的docker-compose.yml文件内容如下:

version: '3'

services:
  app:
    build: app
    ports:
      - "80:80"
    container_name: front-container
    restart: always
    depends_on:
      - api
  api:
    build: api
    container_name: back-container
    restart: always

标签: angulardockerdocker-composebackenddocker-container

解决方案


默认情况下,Compose 会为您的应用程序设置一个网络。服务的每个容器都加入默认网络,并且可以被该网络上的其他容器访问,并且可以通过与容器名称相同的主机名被它们发现。

https://docs.docker.com/compose/networking/

我对 Docker 组合和网络的理解是,使用您定义的服务,您可以通过主机名访问 API api

我想您还想在 API 服务上公开端口 3000,以便您可以访问它。

然后从您的前端应用程序中,您可以向api:3000/endpoint/to/call


推荐阅读