Файлы в томах Docker не обновляются в Windows при изменении файла - PullRequest
0 голосов
/ 23 сентября 2018

У меня был Docker для Windows, я переключился на панель инструментов Docker, а теперь вернулся к Docker для Windows, и я столкнулся с проблемами с томами.

До того, как тома работали идеально и мои контейнеры работали с nodemon / tsnodeФайлы наблюдения / CLI перезапускались должным образом при изменении исходного кода, но теперь их совсем нет, поэтому похоже, что изменения файлов с хоста не заполняются в контейнере.

Это docker-compose для одной службы:

api:
   build:
     context: ./api
     dockerfile: Dockerfile-dev
   volumes:
     - ./api:/srv
   working_dir: /srv
   links:
     - mongo
   depends_on:
     - mongo
   ports:
    - 3030:3030
   environment:
     MONGODB: mongodb://mongo:27017/api_test
   labels:
     - traefik.enable=true
     - traefik.frontend.rule=Host:api.mydomain.localhost

Этот идентификатор Dockerfile-dev

FROM node:10-alpine
ENV NODE_ENV development
WORKDIR /srv
EXPOSE 3030
CMD yarn dev // simply nodemon, working when ran from host

Может кто-нибудь помочь с этим?Диск С является общим и проверен с docker run --rm -v c:/Users:/data alpine ls /data, показывающим список файлов должным образом.

Я буду очень признателен за любую помощь.

1 Ответ

0 голосов
/ 28 сентября 2018

Мы столкнулись с точно такими же проблемами в нашей команде при разработке приложений nodejs / typcript с Docker поверх Windows, и это всегда было большой болью.Однако, если честно, Windows делает правильные вещи, не распространяя событие change на контейнеры (хосты Linux также не распространяют события fsnotify на контейнеры, если изменение не выполняется изнутри контейнера).Итак, суть: я не думаю, что этой проблемы можно избежать, если вы фактически не измените файлы в контейнере, а не измените их на хосте докера.Вы можете добиться этого с помощью инструмента синхронизации кода, такого как docker-sync, см. На этой странице список доступных опций: https://github.com/EugenMayer/docker-sync/wiki/Alternatives-to-docker-sync

Поскольку мы долго боролись с такими проблемами, коллега иЯ запустил проект с открытым исходным кодом под названием DevSpace CLI: https://github.com/covexo/devspace

DevSpace CLI может установить надежную и супер быструю двустороннюю синхронизацию кода между вашими локальными папками и папками в ваших контейнерах dev (работает с любым кластером Kubernetes)любого объема и даже с кратковременными / непостоянными папками), и он идеально подходит для работы с инструментами горячей перезагрузки, такими как nodemon.Настройте мини-куб или кластер с помощью установщика одним щелчком мыши в каком-либо общедоступном облаке, запустите devspace up внутри своего проекта, и вы будете готовы к программированию в своем DevSpace, не беспокоясь о локальных проблемах Docker и проблемах с горячей перезагрузкой.Дайте мне знать, если это работает для вас или есть что-то, что вам не хватает.

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