Synology 上的 NGINX、NodeJS (Docker) 问题

问题描述 投票:0回答:1

我有一个 docker-compose 文件

  1. 启动 Postgres 数据库
  2. 在 localhost:3000 上构建并启动 NestJS (NodeJS) 后端
  3. 在 NGINX 容器内的 localhost:4200 上构建并启动 Angular 应用程序

我已按照 这些步骤 进行操作,并成功地通过 Synology NAS 上运行的良好 DNS 连接到我的前端,但对于后端调用,它总是给出 CORS 错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:3000/my-endpoint. (Reason: CORS request did not succeed). Status code: (null)

如何将服务配置为在同一网络内运行而不出现 CORS 错误?

注意:当我在本地运行 docker-compose 命令时,它可以工作,只是当我在 NAS 上运行它时,它不会让我从 DNS 调用 localhost:3000。

这是我的 nginx.conf

events {}

http {
    include /etc/nginx/mime.types;

    server {
        listen 80;
        server_name localhost;

        root /frontend/dist/browser;
        index index.html;

        location / {
            try_files $uri $uri/ /index.html;
        }
        
        # add locations for JS and CSS
        location ~* \.(js|css)$ {
            expires 1y;
            add_header Cache-Control public;
        }
    }
}

docker-compose.yml

version: '3.8'
services:
  frontend:
    container_name: frontend
    build:
      context: ./
      cache_from:
        - frontend
      dockerfile: ./apps/projects/frontend/Dockerfile
    image: frontend
    ports:
      - 4200:80
    environment:
      NODE_ENV: 'development'
    restart: on-failure
  postgres:
    container_name: postgres
    image: postgres:latest
    environment:
      POSTGRES_USER: foo
      POSTGRES_PASSWORD: bar
      PG_DATA: /var/lib/postgresql/data
    ports:
      - 1234:5432
    volumes:
      - pgdata:/var/lib/postgresql/data
  backend:
    depends_on:
      - postgres
    container_name: backend
    build:
      context: ./
      cache_from:
        - backend
      dockerfile: ./apps/projects/backend/Dockerfile
    image: backend
    ports:
      - 3000:3000
    restart: on-failure
    
volumes:
  pgdata: {}
node.js angular nginx docker-compose nestjs
1个回答
0
投票

我最终将以下内容添加到我的 docker-compose.yml 中,以便 DB、BE 和 FE 在同一网络上运行。

networks:
  my-app-network:

services:
  frontend:
    ...
    networks:
      - my-app-network
  database:
    ...
    networks:
      - my-app-network
  backend:
    ...
    networks:
      - my-app-network
© www.soinside.com 2019 - 2024. All rights reserved.