我目前正在使用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应该是什么?我尝试了以下操作,但没有成功:
- 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组成结构中有以下内容:
- 数据库: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
配置,比如这个
我认为这个用例对您和其他用户都很有用!