Ранее мы запускали Jenkins в режиме Docker in Docker (DIND), т. е. Докер-контейнер Jenkins. Но из-за множества проблем (некоторые из которых описаны по ссылке выше) мы решили отойти от этого подхода и вместо этого позволить контейнеру использовать хост-демон, просто монтируя его как том при запуске контейнера:
-v /var/run/docker.sock:/var/run/docker.sock
Но теперь мы сталкиваемся с проблемами при монтировании относительных путей с помощью Docker Compose, который запускается внутри контейнер, который отлично работал в режиме DIND. Рассмотрим этот файл docker-compose:
myimage:
build: .
environment:
LANG: C.UTF-8
working_dir: /code
volumes:
- ../../../:/code
- ~/.m2/repository:/root/.m2/repository
- ~/.gradle:/root/.gradle
Раньше он монтировал все папки, например папку ../../../
, из контейнера, но теперь, кажется, пытается монтировать их с хоста. Когда я проверяю структуру каталогов на хосте, кажется, что docker-compose
реплицировал структуру каталогов из контейнера, а затем пытается смонтировать эту папку, что делает ее пустой.
Итак, мой вопрос: как можно смонтировать относительные пути в Docker Compose при использовании демона докеров с хоста?