Горячая перезагрузка в Docker контейнер перестает работать через некоторое время - PullRequest
0 голосов
/ 26 февраля 2020

Фон

Мы используем Docker для контейнера приложения Vue. js и подключения тома с исходным кодом.

Dockerfile

FROM node:13.8-alpine
RUN yarn install && \
    apk add --no-cache git
COPY . /usr/src/app
WORKDIR /usr/src/app
EXPOSE 8080
CMD ['/bin/sh', 'start_compose.sh']

docker -compose.yml

version: '3'
services:
  web:
    build: .
    volumes:
      - .:/usr/src/app:delegated
    ports:
      - '8080:8080'
    command: ['/bin/sh', 'start_compose.sh']

start_compose. sh

yarn install
npm rebuild node-sass
yarn serve

Задача

Горячая перезагрузка обычно работает, и изменения кода обычно сразу отражаются в браузере.

Но очень часто через некоторое время горячая перезагрузка перестает работать, и изменения кода не отражаются в браузере.

Остановка и перезапуск контейнера устраняет проблему на некоторое время.

Вопрос

Что может быть причиной этой проблемы и как ее решить?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Добавление watchOptions к vue .config. js, кажется, помогает.

vue .config. js

module.exports = {
  devServer: {
    watchOptions: {
      aggregateTimeout: 300,
      poll: 1000,
    },
  },
};

Я все еще тестирую, чтобы увидеть, это решает проблему.

0 голосов
/ 26 февраля 2020

В некоторых случаях это больше похоже на проблему с узлом, чем на docker. Когда вы останавливаете и перезапускаете контейнер, узел перезагружается ... Я думаю, что перезапуск узла - это то, что снова выполняет горячие перезагрузки.

Но есть несколько поразительных способов монтажа, "делегированных". Это может привести к несоответствию между объемом хоста (при редактировании кода) и представлением контейнера. Попробуйте изменить его на «непротиворечивый».

https://docs.docker.com/docker-for-mac/osxfs-caching/#tuning -согласованными-кэшированными-и-делегированными-конфигурациями

...