我目前正在使用Rest API(Express,Nodejs)和Postgresql开发一个有角度的应用程序。将其托管在本地计算机上时,一切工作正常。经过测试后,我将映像移至Ubuntu服务器,以便可以将应用程序托管在外部端口上。我可以使用https:// server-external-ip:80访问有角度的前端,但是在尝试登录时,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应该是什么?我尝试了以下方法,但无济于事:
答案 0 :(得分:2)
我认为您应该将docker-compose
服务用作DNS
。看来您有几个可用的docker主机/端口,在docker-compose结构中有以下内容:
请确保在db
服务的环境部分中将POSTGRES_DB
用作backend
。
看看我的repo,我认为这是了解类似项目的工作方式以及如何使用nginx
构建多个应用程序的最佳方法,您也可以查看我的docker-compose.yml
,它使用多种服务,并使用nginx
进行代理,并且可以协同工作。
在此link上您将找到一个nginx/default.conf
文件,其中包含几个nginx
上游配置,请查看我如何在其中使用docker-compose服务引用作为{{1 }}。
在client/目录中,我还有另一个hosts
作为react.js项目的Web服务器。
在server/目录中,它具有Node.js API,它连接到Redis和Postgres SQL数据库,该数据库也是从docker-compose.yml构建的。
如果您需要设置流量或将流量重定向到/ api,则可以使用this之类的nginx
配置
我认为这个用例对您和其他用户很有用!