【发布时间】:2020-07-04 11:35:54
【问题描述】:
这只是一个关于理论的问题,我的应用程序运行良好......
所以,我有 3 个使用 docker-compose 运行的服务:一个 postgres 数据库、一个 backend springboot 和一个 frontend angular。 p>
据我所知,docker容器可以访问其他docker容器的端口,而不需要暴露端口,所以不需要暴露或绑定端口,因为它们都是容器,可以通过默认的桥接器相互访问网络模式(这是我学的,不知道对不对)。
我只需要从前端容器公开端口,这样我就可以从我的本地主机访问。
问题是:我可以使用后端(后端->数据库)访问数据库,而无需导出任何端口,但使用前端(前端->后端) 使用 Angular 和 nginx,它只适用于暴露的后端端口,为什么?
docker-compose.yml:
version: "3"
services:
### DATABASE ###
db:
image: postgres:latest
container_name: mydb
network_mode: bridge
environment:
- POSTGRES_PASSWORD=envpass
- POSTGRES_USER=envuser
- POSTGRES_DB=database
# It works without exposing
# expose:
# - 5432
# ports:
# - 5433:5432
### BACKEND ###
backend:
image: angularback
container_name: backend
network_mode: bridge
expose:
- 8080
ports:
- 8082:8080
depends_on:
- db
links:
- db
### FRONTEND ###
frontend:
image: angularfront
container_name: frontend
network_mode: bridge
expose:
- 80
ports:
- 8084:80
depends_on:
- backend
links:
- backend
【问题讨论】:
-
您尚未将数据库配置为持久化数据。您需要创建一个卷并将其挂载到 postgres 存储其数据的位置。
-
你用nginx构建了一个角度图像吗?
标签: angular docker nginx docker-compose containers