我正在构建一个由多个后端和前端组件组成的网站。我想使用docker compose来部署到生产服务器。
以下是各种组成部分:
后端
前端
假设我保持每个Dockerfile一个进程的口号,我想为上面显示的每个“层”构建单独的图像 - BUT ,我识别的层是“正确的” - 在后端和前端之间分开是否有意义?
最后,有人可以展示一个示例docker_compose.yml
文件,该文件允许我从不同的部分组装网站 - 同时考虑到龙卷风应用程序等依赖项,这取决于C ++应用程序生成的Python库,以及pg数据库服务。
答案 0 :(得分:2)
我认为拆分你的后端和前端应用程序绝对有道理。
我不太确定我完全理解你对生成Python使用的库的C ++应用程序的要求。你只是说你有使用C库的Python包吗?
无论如何,您会在下面注意到我附加了一个示例docker-compose.yml
文件。我甚至已经为你的前端和后端应用程序包括网络分段,尽管这是可选的,由你决定。
因为您特别提到了依赖于Python和数据库的Tornado容器,所以我使用了服务级别depends_on
密钥。请注意,这不会等到启动tornado
容器,直到这些其他服务“准备好”,直到它们的容器启动为止。有关此协调的更多信息,请参阅Docker文档(https://docs.docker.com/compose/compose-file/#dependson)。
version: '3'
services:
python_app:
image: your_name/your_python_image
ports:
- 5000:5000
networks:
- backend
# https://hub.docker.com/_/postgres/
database:
image: postgres
ports:
- 5432:5432
environment:
- POSTGRES_PASSWORD=mysecretpassword
networks:
- backend
tornado:
image: your_name/your_tornado_image
ports:
- 8000:8000
depends_on:
- python_app
- database
networks:
- frontend
front_end:
image: your_name/your_front_end_image
ports:
- 80:80
- 443:443
networks:
- frontend
- backend
# https://docs.docker.com/compose/networking/#specifying-custom-networks
networks:
frontend:
backend:
很高兴与您一起完成更多这方面的工作,并建立一个您感到满意的解决方案。