Как я могу использовать тома Rush и Docker вместе?
Я пытаюсь использовать Rush для обработки монорепозитория. Я видел недавний аналогичный вопрос в разделе Как собрать докер (монорепозиторий спешки)?, но в нем нет ответов, и он больше касается вопросов сборки, чем вопросов разработки.
Rush использует символические ссылки, чтобы избежать копирования одних и тех же зависимостей между разными пакетами в одном и том же репозитории.
Я используюdocker-compose
для местного разработчика, как и для любого другого проекта. Конфиг такой:
version: '3'
services:
web:
build: .
image: 'my-image'
command: "npm start"
user: "node"
working_dir: /home/node/app
volumes:
- ./:/home/node/app
Когда я делаюdocker-compose up
он не может найти ни одну из моих зависимостей. Если я скопирую папку в случайное место, запуститеnpm install
, и попробуй так же работает, потому что нет симлинков.
Я обсуждал создание тома в исходном местоположении../../common/temp/node_modules/
но это может быть немного сумасшедшим, поскольку у него есть модули каждого узла для всех пакетов. Дело в том, что файлы находятся за пределами структуры папок моего пакета server/docker.
Есть ли какая-то опция докера или спешки, которую мне не хватает?
2 ответа
Это работает, но кажется неправильным. Надеюсь, у другого пользователя есть лучший ответ.
volumes:
- ./src/:/home/node/app/src
- ../../common/temp/node_modules/:/home/node/app/node_modules
Я бы предположил, что у вас естьnode_modules
в вашем пути .dockerignore, поэтому он не включает вывод вашей установки с вашего хоста. Когда вы делаете объем, пустая папка затем отображается.