Я пытаюсь докеризировать приложение React на хосте Ubuntu 18.04 до гостевого узла 12. Я следую этому руководству https://mherman.org/blog/dockerizing-a-react-app/ и все работает нормально, пока не доберусь до монтирования томов на докер-машину. После монтирования тома целевая папка в гостевой системе пуста или даже удаляет существующие файлы, уже смонтированные в образе.
Ниже приводится мой Dockerfile:
# base image
FROM node:12.2.0-alpine
RUN apk add --no-cache git
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY ./package.json /app/package.json
RUN npm install --silent
RUN npm install react-scripts@3.0.1 -g --silent
# start app
CMD ["npm", "start"]
создайте докер-машину и настройте оболочку для подключения к ней:
docker-machine create -d virtualbox lz-front
eval $(docker-machine env lz-front)
Смонтируйте корневую папку проекта
sanka@ThinkPad-P1:~/code/lz/lz-new$ VBoxManage sharedfolder add lz-front --name lz-new --hostpath /home/sanka/code/lz/lz-new/ --automount
Построить изображение
sanka@ThinkPad-P1:~/code/lz/lz-new$ docker build -t lz:dev .
Проверка того, что внутри, показывает, что все как и ожидалось:
sanka@ThinkPad-P1:~/code/lz/lz-new$ docker run -it --rm lz:dev sh
/app # ls
node_modules package-lock.json package.json
/app #
Но после монтирования томов целевая папка содержит только node_modules
sanka@ThinkPad-P1:~/code/lz/lz-new$ docker run -v ${PWD}:/app -v /app/node_modules -p 3001:3000 -it --rm lz:dev sh
/app # ls
node_modules
/app #
Если я запускаю команду run за пределами док-машины, приложение запускается нормально. Поэтому я подозреваю, что автоматическое монтирование VirtualBox не работает для меня.
EDIT:
показывает содержимое рабочего каталога
sanka@ThinkPad-P1:~/code/lz/lz-new$ ls
config-overrides.js Dockerfile package.json README.md test
docker-compose.yml node_modules public src
РЕДАКТИРОВАТЬ 2:
После входа в Docker-машину с помощью SSH, я могу проверить, что автоматическая установка общей папки работает так, как они присутствуют в VM
sanka@ThinkPad-P1:~/code/lz/lz-new$ docker-machine ssh lz-front
docker@lz-front:~$ ls /
bin home lib lz-new proc sbin usr
dev hosthome lib64 mnt root sys var
etc init linuxrc opt run tmp