我是Docker的新手,我想使用带有Docker compose的两个容器创建我的第一个应用程序。
我的第一个容器包含Qt库,第二个容器包含OpenFace库。
我想使用Qt容器(通过qmake)构建我的C ++项目,该项目引用第二个容器中的OpenFace库。
因此,我创建了一个docker-compose.yml文件,如下所示:
version: "3"
services:
openface:
image: algebr/openface:latest
tty: true
devices:
- "/dev/video0:/dev/video0"
environment:
- DISPLAY=$DISPLAY
volumes:
- "$HOME/.Xauthority:/root/.Xauthority:rw"
- "./Workspace:/Workspace"
qt:
image: sgclark/trusty-qt59
volumes:
- "./Workspace:/Workspace"
Workspace文件夹是包含C ++项目的共享文件夹。
容器正确启动,但没有预期的结果。 当我使用qmake生成项目时,由于找不到OpenFace库,它会返回错误。
我以正确的方式使用Docker吗?如果是,该如何解决我的设置以构建和运行该应用程序?
预先感谢您的帮助。
答案 0 :(得分:0)
Docker容器彼此隔离,因此它们无法看到彼此的进程或文件系统。在您的示例中,两个容器都可以使用工作空间目录,但是每个容器只能访问自己的文件系统和工作空间目录。
要同时访问Qt和openface,必须将两个docker映像“合并”到一个。在这种情况下,合并意味着编写一个以sgclark / trusty-qt59为基础的Dockerfile,然后安装openface库,以便两者均可用于构建您的软件。
Docker没有提供合并两个映像的方法,因此您将以这两个映像中的一个为基础写出第三个映像。