示例docker组成web应用程序devops的设置

我正在build立一个由几个后端和前端组件组成的网站。 我想用docker compose部署到生产服务器。

这里是各种组件:

后端

  • C ++代码来构build共享库以供Python包装使用
  • 龙卷风Web服务器使用从上一步生成的Python库
  • Postgresql数据库服务器

前端

  • ReactJS,webpack,node,(HTML / CSS)

假设我为每个Dockerfile保留一个进程的口头禅,我想为上面显示的每个“图层”build立单独的图像 – 但是 ,我确定的图层是否“正确” – 它是否有意义分开后端和前端?

最后,有人可以显示一个示例docker_compose.yml文件,它允许我从不同的部分组装网站 – 同时考虑到依赖性,如龙卷风应用程序,这取决于C ++应用程序生成的Python库以及pg数据库服务。

我认为分开你的后端和前端应用程序绝对是有道理的。

我不太确定,我完全理解你的需求,围绕一个C ++应用程序生成由Python使用的库。 你只是说你有使用C库的Python包吗?

无论如何,你会注意到,我已经附加了一个示例docker-compose.yml文件。 我甚至已经为您的前端和后端应用程序包括networking分段,尽pipe这是可选的并且由您决定。

因为你特别提到了依赖于Python和数据库的Tornado容器,所以我使用了服务级别depends_on key。 请注意,这将不会等到启动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: 

很高兴通过更多与您的工作,并build立一个您感到舒服的解决scheme。