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запустить контейнер, и это сработало.

Я еще не совсем понял это, но я думаю, что это как-то связано с изображением альпийского узла. Попробуйте вместо этого использовать одно из «тонких» изображений узла.

Другие вопросы по тегам