Как я могу поделиться библиотекой между контейнерами Docker? - PullRequest
0 голосов
/ 03 декабря 2018

Я новичок в 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?Если да, как я могу исправить мои настройки для сборки и запуска приложения?

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 04 декабря 2018

Контейнеры Docker изолированы друг от друга, поэтому они не могут видеть друг друга процессы или файловые системы.В вашем примере каталог рабочей области будет доступен обоим контейнерам, но каждый контейнер может иметь доступ только к своей собственной файловой системе и каталогу рабочей области.

Чтобы иметь возможность одновременно обращаться и к Qt, и к openface, вам потребуется "объединить оба изображения докера в одном.Слияние в этом случае означает создание Dockerfile, в котором вы используете sgclark / trusty-qt59 в качестве основы, а затем устанавливаете библиотеки openface, чтобы обе были доступны для сборки вашего программного обеспечения.

Docker не предоставляет способ слияниядва изображения, поэтому вы закончите запись третьего изображения, используя одно из этих двух в качестве основы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...