我认为拆分你的后端和前端应用程序绝对有意义。
我不太确定我完全理解你的需求,它围绕一个C++应用程序生成由Python使用的库。你的意思是说你有使用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:
很高兴与您一起工作了更多,并建立起一个您感觉舒适的解决方案。
非常感谢示例docker_compose.yml文件。 C++应用程序生成共享库,然后SWIG用它自动生成一个包含共享库导出的方法的Python库。然后,Tornado应用程序具有从自动生成的Python代码中调用纯函数和方法的函数。我是新来的码头工人 - 所以请在我调整您提供的样板代码的同时,让我忍受(待命),以使其正常工作。感谢和代码+1。 –