Docker-compose на Vite
Я прикрепляю приложение Vite к Vue. Когда я бегу
yarn dev
в моей системе все в порядке, но когда я запускаю ту же команду из своего файла докеров, я получаю следующую ошибку
yarn run v1.22.5
warning package.json: No license field
$ vite
failed to load config from /app/vite.config.ts
error when starting dev server:
Error: spawn Unknown system error -8
Мой файл докеров
FROM node:14.16.0-alpine3.13
WORKDIR /app
COPY . .
CMD ["yarn", "dev"]
И мой docker-compose.yml
version: '3.8'
services:
client:
build:
context: ./dockerfiles
dockerfile: client.dockerfile
volumes:
- ./client:/app
ports:
- '3000:3000'
Моя структура папок
client
|-public
|-src
|-node_modules
|-package.json
|-vite.config.ts
|- ... rest of files
dockerfiles
|-client.dockerfile
docker-compose.yml (at root level)
3 ответа
У меня была такая же проблема, по какой-то причине докер использовал папку из проекта вместо своей (с
RUN npm install
команда). Я решил это, добавив
.dockerignore
файл и игнорируя
node_modules
проекта.
//.dockerignore
node_modules/*
В моем случае мне пришлось запускать проект в контейнере докеров и использовать композицию докеров для одновременного запуска фронта, а также других контейнеров, чтобы проект работал локально. Я установил определенную версию vite, напримерnpm install vite@3.2.2
а затем докеру нужно, чтобы esbuild был пакетом Linux для Windows и arm64 для Mac, поэтому я принудительно установилesbuild-linux-64
в корневой папке, а затем использовал командуdocker-compose up
запустить контейнер, и это сработало.
Я еще не совсем понял это, но я думаю, что это как-то связано с изображением альпийского узла. Попробуйте вместо этого использовать одно из «тонких» изображений узла.