我有一个 docker-compose 文件
我已按照 这些步骤 进行操作,并成功地通过 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: {}
我最终将以下内容添加到我的 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