Докер не сохраняет данные тома, смонтированные в приложении NodeJS

#docker #persist #volumes

Вопрос:

Я не уверен, что делаю что-то не так. Я уже просматривал другой аналогичный пост в StackOverflow, но я не вижу, в чем проблема.

Это мой файл docker-compose:

   ## APP
  nodeServer:
    build:
      context: .
      dockerfile: ./config/node-express/Dockerfile
    image: node-mysql-app
    restart: unless-stopped
    stdin_open: true
    tty: true
    ports:
      - 3000:3000
      - 8745:8745
    volumes:
      - .:/home/dockeruser/src
      # - node_modules:/home/dockeruser/src/node_modules

    depends_on:
      - mysqldb
      
    restart: unless-stopped

 volumes: 
   node_modules:
 

И мой док-файл

 FROM node:14.4-alpine3.11

RUN apk add --no-cache python g   make
ENV NODE_ENV=development
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install --production 
RUN apk update amp;amp; apk add bash


RUN addgroup -g 1010 -S docker amp;amp; 
     adduser -u 1010 -S dockuser -G docker

USER dockuser
COPY . /home/dockuser/src
WORKDIR /home/dockuser/src

EXPOSE 3000 8745
CMD ["/bin/sh", "entrypoint.sh"]
 

Я запускаю файл docker-compose.yml в корневом каталоге приложения, что означает, что у меня есть весь код приложения. Файл docker находится по этому пути:

 dockerfile: ./config/node-express/Dockerfile
 

После запуска этого приложения приложение нормально работает в порту 3000, и я могу выполнить контейнер и просмотреть код, но если я что-то изменю на хосте, контейнер не будет обновлен. Я также не могу видеть node_модули, созданные при запуске файла Dockerfile:

 "docker-compose build --no-cache"

"docker-compose up"
 

Сначала я всегда удаляю контейнеры и тома на всякий случай.

Ответ №1:

Я решил проблему, выполнив эти изменения.

Файл закрепления:

 WORKDIR /usr/src/app
COPY . .
 

докер-compose.yml

  volumes:
      - .:/usr/src/app
 

Я не уверен в причине, но это работает.