如何从Angular Nginx容器连接到Node API docker容器



我目前正在使用Rest API(Express,Nodejs(和Postgresql开发一款angular应用程序。在我的本地机器上托管时,一切都很好。测试后,我将图像移到Ubuntu服务器上,这样应用程序就可以托管在外部端口上https://server-external-ip:80但是当尝试登录时,Nginx没有连接到NodeApi。这是我的docker撰写文件:

version: '3.0' 
services:
db:
image: postgres:9.6-alpine
environment:
POSTGRES_DB: myDb
POSTGRES_PASSWORD: myPwd
ports:
- 5432:5432
restart: always
volumes:
- ./postgres-data:/var/lib/postgresql/data
networks:
- my-network
backend: # name of the second service
image: myId/mynodeapi
ports:
- 3000:3000
environment:
POSTGRES_DB: myDb
POSTGRES_PASSWORD: myPwd
POSTGRES_PORT: 5432
POSTGRES_HOST: db
depends_on:
- db
networks:
- my-network
command: bash -c "sleep 20 && node server.js"
myapp:
image: myId/myangularapp
ports:
- "80:80"
depends_on:
- backend
networks:
- my-network
networks:
my-network:

我不确定apiUrl应该是什么?我尝试了以下操作,但没有成功:

  1. apiUrl:"http://backend:3000/api">
  2. apiUrl:";http://server-external-ip:3000/api">
  3. apiUrl:";http://server-internal-ip:3000/api">
  4. apiUrl:";http://localhost:3000/api">

我认为应该将docker-compose服务用作DNS。您似乎有几个docker主机/端口可用,在您的docker组成结构中有以下内容:

  • 数据库:5432
  • http://backend:3000
  • http://myapp

确保在backend服务的环境部分中使用db作为POSTGRES_DB

看看我的repo,我认为这是了解类似项目如何工作以及如何使用nginx构建多个应用程序的最佳方式,你也可以查看我的docker-compose.yml,它使用了多个服务,并使用nginx代理,并一起工作。

在这个链接上,你会发现一个nginx/default.conf文件,它包含几个nginx上游配置。请看看我是如何使用docker compose服务引用作为hosts的。

在client/目录中,我还有另一个nginx作为react.js项目的web服务器。

在服务器/目录上,它有一个Node.js API,它连接到同样由docker-compose.yml.构建的Redis和Postgres SQL数据库

如果你需要将流量设置或重定向到/api,你可以使用一些ngnix配置,比如这个

我认为这个用例对您和其他用户都很有用!

最新更新