Node.js 如何从Angular Nginx容器连接到节点API docker容器
我目前正在使用RESTAPI(Express、Nodejs)和Postgresql开发angular应用程序。在我的本地机器上托管时,一切都运行良好。测试后,我将图像移动到Ubuntu服务器,这样应用程序就可以托管在外部端口上。我可以使用https://server-external-ip:80 但是当尝试登录时,Nginx没有连接到NodeApi。这是我的docker撰写文件:Node.js 如何从Angular Nginx容器连接到节点API docker容器,node.js,angular,docker,nginx,docker-compose,Node.js,Angular,Docker,Nginx,Docker Compose,我目前正在使用RESTAPI(Express、Nodejs)和Postgresql开发angular应用程序。在我的本地机器上托管时,一切都运行良好。测试后,我将图像移动到Ubuntu服务器,这样应用程序就可以托管在外部端口上。我可以使用https://server-external-ip:80 但是当尝试登录时,Nginx没有连接到NodeApi。这是我的docker撰写文件: version: '3.0' services: db: image: postgres:9.6-
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:
我不确定APIRL应该是什么?我尝试了以下方法,但没有任何效果:
我认为您应该使用
docker compose
服务作为DNS
。似乎有多个docker主机/端口可用,docker compose结构中有以下内容:
- db:5432
- http://backend:3000
- http://myapp
后端
服务的环境部分中使用db
作为POSTGRES\u db
看看my,我认为这是了解类似项目如何工作以及如何使用nginx
构建多个应用程序的最佳方法,您还可以查看mydocker compose.yml
,它使用多个服务,并使用nginx
代理,并且一起工作
在这里,您将找到一个nginx/default.conf
文件,其中包含多个nginx
上游配置。请查看我是如何使用docker compose服务引用作为主机的
在目录中,我还有另一个nginx
作为react.js项目的web服务器
在目录上,它有一个Node.js API,它连接到Redis和Postgres SQL数据库,也从docker-compose.yml构建
如果您需要将流量设置或重定向到/api,您可以使用一些ngnix
config-like
我认为这个用例对你和其他用户都很有用 谢谢雨果·莱斯塔。好的,祝你好运,如果你需要更多的帮助,请告诉我。这就是我一直在寻找的。这对我来说是一个新的概念,所以我在尝试之前阅读了所有的文章,但效果不错。非常感谢您的详细解释。不过有一个问题-我已经在几台机器上测试过,通过localhost访问应用程序,但是我如何使用?我已经试过了,但没有效果<代码>服务器{listen 80;服务器名称myapp;位置/{proxy\u passhttp://myapp}位置/api{proxy_passhttp://backend:3000}
Hello:),您检查过容器状态了吗?他们都准备好了吗?您是否尝试在浏览器中运行?如果我之前的回答有用,请将其标记为已解决,也许这有助于其他用户。如果您将此解决方案托管在虚拟机中并运行这些容器,您将在该机器中绑定这些端口,这意味着您还可以有一个指向端口80的负载平衡器,它将正常工作,如果你也可以设置指向这台机器的DNS记录,它也可以工作。如果您只想创建一个名为myapp的简单主机,您应该设置内部主机文件来实现这一点。我希望它能帮助你