使两个Docker容器一起工作

我正在寻求如何dockerize我的应用程序的build议。 这就是应用程序的工作原理:有一个网站负责帮助用户为可执行文件创buildinput。 input是两个图像,一个是用户上传的,另一个是用户在他上传的图像上绘制的东西。 该网站使用Python / Django和Apache2。 完成后,网站将这两个图像写在服务器上,将它们存储在一个mysql数据库中,并调用使用这两个图像作为input的可执行文件。 可执行文件使用OpenCV 3.1,可以这样调用:

./my_executable.sh ./path_to_image1.jpg ./path_to_image2.jpg ./path_where_to_save_output.jpg 

然后,可执行文件将输出图像写入服务器中与其他两个input图像相同的位置,网站显示结果。

目前,Docker-Compose编排了两个容器,一个是官方的mysql镜像(实际上这个容器没有问题,因为我只需要告诉Django在哪里可以find使用服务名的数据库),另外一个我用所有的Python / Django / Apache2 / OpenCV3.1依赖项创build。 这意味着网站和可执行文件在同一个容器中运行。 从我所了解的Docker中,网站和可执行文件应该在不同的容器中运行。 但我只是不知道如何容器告诉另一个容器执行的东西。

我可以创build一个图像i_cv31,只是安装OpenCV 3.1和复制内的可执行文件:

 FROM debian:jessie #OpenCV31 RUN apt-get update && apt-get install -y ALL_OPENCV_DEPENDENCIES RUN CLONE_AND_INSTALL_OPENCV_31 #Executable COPY my_executable.sh/ ENTRYPOINT ["/my_executable.sh"] 

有一个主机文件夹中的图像,我可以映射此容器内的文件夹,并像这样调用主机上的可执行文件:

 docker run -v /host/images:/images i_cv31 /images/image1.jpg /images/image2.jpg /images/result.png 

可执行文件在卷上写入result.png,容器结束其任务并停止。

有没有办法从网站容器发送信号到主机,以便它创build一个可执行容器? 我知道我们可以将docker.sock从主机映射到具有卷的容器,但不知何故,我无法使其工作,它看起来这不是很安全。 另外,似乎docker运行选项的链接出于安全原因已被弃用,我不知道如何使用此选项访问另一个容器上的文件。 似乎有Dockernetworking选项,如果我理解正确的是Docker-Compose的function。

总结:我的Web容器在一个卷中写入两个图像。 这个容器需要Apache2 / Python / Django。 如果我们提供两个图像,则可以从另一个启动可执行文件的容器访问相同的卷。 这个容器需要OpenCV。 我所缺less的是这个信号:图像准备就绪,启动可执行文件并返回结果,以便网站可以显示它。 到目前为止,这个信号是一个Javascript文件中的Ajax调用。 它把这两个图像发送给Django,Django调用了可执行文件,知道结果图像何时准备就绪,以便显示。

我真的失去了,所以非常感谢你给我的任何帮助。