Есть готовое веб-приложение на react, сборщик vite (базовая конфигурация). как обернуть…
- User
Есть готовое веб-приложение на react, сборщик vite (базовая конфигурация). как обернуть это в докер? требования:
- чтобы можно было ссылаться на локальные файлы
- чтобы было 2 режима dev и prod (в dev будет работать горячая перезагрузка, а в prod можно было открыть приложение по ссылке)
- Assistant
Для обертывания вашего веб-приложения на React с использованием сборщика Vite в Docker, вам необходимо выполнить следующие шаги:
- Создайте файл
Dockerfileв корневой папке вашего проекта:
# Используйте официальный образ Node.js как базовый FROM node:14 # Установите рабочую директорию WORKDIR /app # Копируйте файлы package.json и package-lock.json COPY package*.json ./ # Установите зависимости RUN npm ci # Копируйте все исходные файлы проекта в контейнер COPY . . # Экспонируйте порт, на котором будет работать ваше приложение (например, 3000) EXPOSE 3000 # Запустите сборку и сервер веб-приложения, режимы dev и prod будут определяться через ARG ARG MODE=production RUN npm run build --mode=$MODE CMD ["npm", "run", "serve"]- Создайте файл
.dockerignoreв корневой папке вашего проекта, чтобы исключить ненужные файлы из контейнера:
node_modules npm-debug.log .dockerignore .dockerenv Dockerfile-
Установите Docker на вашем компьютере, если он еще не установлен.
-
Соберите Docker-образ для вашего проекта:
Для режима разработки (dev):
docker build -t my-react-app --build-arg MODE=development .Для режима продакшн (prod):
docker build -t my-react-app:prod .- Запустите Docker-контейнер с вашим веб-приложением:
Для режима разработки (dev):
docker run -it --rm -p 3000:3000 -v ${PWD}:/app -e MODE=development my-react-appДля режима продакшн (prod):
docker run -it --rm -p 3000:3000 my-react-app:prodТеперь ваше приложение должно быть доступно на
http://localhost:3000.Обратите внимание, что для режима разработки (dev) контейнер будет подключаться к локальной файловой системе и поддерживать "горячую перезагрузку". В режиме продакшн (prod) приложение будет запущено без доступа к локальной файловой системе, исключительно в контейнере.
- Создайте файл