我目前正在使用 Rest API(Express、Nodejs)和 Postgresql 开发一个 Angular 应用程序。当托管在我的本地计算机上时,一切运行良好。测试后,我将图像移至 Ubuntu 服务器,以便该应用程序可以托管在外部端口上。我可以使用 https://server-external-ip:80 访问 Angular 前端,但在尝试登录时,Nginx 未连接到 NodeApi。这是我的 docker-compose 文件:
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 应该是什么?我尝试了以下方法,但没有任何效果:
- apiUrl:“http://backend:3000/api”
- apiUrl:“http://server-external-ip:3000/api”
- apiUrl:“http://server-internal-ip:3000/api”
- apiUrl:“http://localhost:3000/api”
最佳答案
我认为您应该使用docker-compose
服务作为DNS
。看来您有多个可用的 docker 主机/端口,您的 docker-compose 结构中有以下内容:
- 数据库:5432
- http://backend:3000
- http://myapp
确保在后端
服务的环境部分中将db
用作POSTGRES_DB
。
看看我的 repo ,我认为这是学习类似项目如何工作以及如何使用 nginx
构建多个应用程序的最佳方式,您也可以查看我的 docker-compose.yml
,它使用多个服务使用 nginx
代理并协同工作。
关于这个link你会发现一个 nginx/default.conf
文件,它包含几个 nginx
上游配置,请看一下我如何使用 docker-compose 服务引用作为 主机
。
client/内目录中,我还有另一个 nginx
作为 React.js 项目的 Web 服务器。
关于server/目录,它有一个 Node.js API,它连接到同样由 docker-compose.yml 构建的 Redis 和 Postgres SQL 数据库。
如果您需要将流量设置或重定向到/api,您可以使用一些 ngnix
配置,例如 this
我认为这个用例对您和其他用户很有用!
关于node.js - 如何从 Angular Nginx 容器连接到 Node API docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63530776/