Ошибка "sh: vite: not found" указывает на то, что команда `vite` не может быть найдена в окружении вашего Docker-контейнера. Это может происходить по нескольким причинам. Давайте рассмотрим возможные источники проблемы и их решения.
### 1. Установка Vite
Убедитесь, что Vite действительно установлен в вашем проекте. Даже если он указан в `package.json`, он может не быть установлен, если команда `npm ci` не выполнится корректно. В вашем Dockerfile сначала устанавливаются пакеты, а затем происходит копирование остальных файлов. Убедитесь, что Vite там установлен.
### 2. Убедитесь, что Vite установлен как зависимость
Проверьте, что `vite` указан в секции `dependencies` или `devDependencies` в вашем `package.json`, например:
```json
{
"devDependencies": {
"vite": "^latest"
}
}
```
### 3. Использование локальных зависимостей
Когда вы запускаете команду `npm run dev`, она пытается запустить `vite` как локальную зависимость проекта. Убедитесь, что вы вызываете `npm run dev` из того места, где находится ваш `node_modules` и где установлен `vite`. Если вы хотите быть уверены, что Vite доступен, вы можете явно указать путь:
```json
"scripts": {
"dev": "node_modules/.bin/vite"
}
```
Альтернативно вы можете просто использовать `npx vite`, так как `npx` автоматически найдет исполняемый файл в `node_modules`.
### 4. Пересоздание контейнера
После внесения изменений в `package.json` или Dockerfile не забудьте пересоздать контейнер, чтобы изменения вступили в силу. Вы можете это сделать с помощью команд:
```bash
docker-compose down
docker-compose up --build
```
или, если вы используете `docker` напрямую:
```bash
docker build -t your-image-name .
docker run your-image-name
```
### 5. Режим разработки (dev)
Если вы видите, что `vite` находится только в `devDependencies`, убедитесь, что у вас правильно настроены параметры среды. Обратите внимание на использование `npm ci --omit=dev`, которое не устанавливает dev-зависимости. Вам, скорее всего, нужно удалить `--omit=dev` из команды.
### 6. Убедитесь, что все зависимости установлены
С также проверьте свой локальный проект, чтобы убедиться, что всё работает вне Docker. Запустите:
```bash
npm install
npm run dev
```
Если всё работает локально, но не в Docker, то причина, скорее всего, в настройках Docker.
### Пример исправленного Dockerfile
Попробуйте следующий вариант вашего Dockerfile:
```dockerfile
ARG NODE_VERSION=23.3.0
FROM node:${NODE_VERSION}-alpine
ENV NODE_ENV development
WORKDIR /usr/src/app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["npm", "run", "dev"]
```
### Заключение
Убедитесь, что Vite установлен и доступен в вашем проекте, а затем пересоздайте контейнер. Надеюсь, это поможет решить вашу проблему! Если проблема сохранится, пожалуйста, предоставьте больше информации о вашем `package.json` и о том, как вы запускаете Docker.