Ниже мой файл докеров, я делаю копию файла js в команде копирования и после этого устанавливаю рабочий каталог, а затем - громкость и команду запуска. 1) Я понимаю node_modules (который создается из-за запуска npm install) IS стирается, когда контейнер впервые инициализируется из-за создания тома в том же месте Мой вопрос, почему мой app.js, который я скопировал на шаге 3, не стирается, поскольку он также находится на том же пути, что и том?
FROM node:latest
ENV NODE_ENV=production
ENV PORT=3000
COPY . /app
WORKDIR /app
VOLUME ["/app"]
RUN npm install
EXPOSE $PORT
ENTRYPOINT ["node","app.js"]
Два замечания: (i) относительно томов использование команды VOLUME в Dockerfile на самом деле является плохой практикой, см., Например, boxboat.com/2017/01/23/volumes-and-dockerfiles-dont-mix; вместо этого лучше использовать -v или --mount флаги запуска докера (или соответствующие параметры в файле docker-compose.yml); (ii) простое копирование всех файлов за один раз (COPY . /app) мешает работе механизма кеширования Docker; вы можете взглянуть на это руководство по докеризации приложений Node.js


Вопрос: Почему мой app.js (который я скопировал на шаге 3) не стирается, в то время как node_modules.
А: Как описано в документации докера в разделе томов.
Цитировать:
Changing the volume from within the Dockerfile:
If any build stepschange the data within the volume after it has been declared, thosechanges will be discarded.
Справка:https://docs.docker.com/engine/reference/builder/#notes-about-specifying-volumes
Идеально! Я получил ответ
может быть связано: stackoverflow.com/questions/35466045/…