Попытка запустить Vite внутри контейнера Docker

Я новичок в технологиях Docker и JS, так что не судите слишком сильно. Я пытаюсь запустить npm run dev из контейнера node.js (называемого npm). Он идет правильно и показывает, что css и скрипты доступны на локальном хосте: 3009, но это не так. Я прав, что проблема в контейнере node.js, который все время пытается перезапуститься и не открывает никаких портов? Если да, то как я могу это исправить? Заранее спасибо. Вот мои файлы docker-compose.yml и vite.config.js.

version: '3'

networks:
  laravel:

services:
  site:
    build:
      context: ./dockerfiles
      dockerfile: nginx.dockerfile
      args:
        - UID=${UID:-1000}
        - GID=${GID:-1000}
    container_name: nginx
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./src:/var/www/html:delegated
    depends_on:
      - php
      - redis
      - mysql
      - mailhog
    networks:
      - laravel

  mysql:
    image: mariadb:10.6
    container_name: mysql
    restart: unless-stopped
    tty: true
    volumes:
      - ./db-data:/var/lib/mysql
    ports:
      - 3306:3306
    environment:
      MYSQL_DATABASE: homestead
      MYSQL_USER: homestead
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: secret
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    networks:
      - laravel

  php:
    build:
      context: ./dockerfiles
      dockerfile: php.dockerfile
      args:
        - UID=${UID:-1000}
        - GID=${GID:-1000}
    container_name: php
    restart: unless-stopped
    volumes:
      - ./src:/var/www/html:delegated
    networks:
      - laravel

  redis:
    image: redis:alpine
    container_name: redis
    restart: unless-stopped
    ports:
      - 6379:6379
    networks:
      - laravel

  composer:
    build:
      context: ./dockerfiles
      dockerfile: composer.dockerfile
      args:
        - UID=${UID:-1000}
        - GID=${GID:-1000}
    container_name: composer
    volumes:
      - ./src:/var/www/html
    working_dir: /var/www/html
    depends_on:
      - php
    user: laravel
    entrypoint: ['composer', '--ignore-platform-reqs']
    networks:
      - laravel

  npm:
    image: node:latest
    container_name: npm
    restart: always
    volumes:
      - ./src:/var/www/html
    ports:
      - 3000:3000
      - 3001:3001
      - 3009:3009
    working_dir: /var/www/html
    entrypoint: ['npm']
    networks:
      - laravel

  artisan:
    build:
      context: ./dockerfiles
      dockerfile: php.dockerfile
      args:
        - UID=${UID:-1000}
        - GID=${GID:-1000}
    container_name: artisan
    volumes:
      - ./src:/var/www/html:delegated
    depends_on:
      - mysql
    working_dir: /var/www/html
    entrypoint: ['php', '/var/www/html/artisan']
    networks:
      - laravel

  mailhog:
    image: mailhog/mailhog:latest
    container_name: mailhog
    ports:
      - 1025:1025
      - 8025:8025
    networks:
      - laravel

vite.config.js

import {defineConfig} from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    server: {
        port: 3009
    },
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
    ],
});

Не похоже, что ваш контейнер npm на самом деле что-то делает, он просто запускает оболочку npm и завершает работу. Есть ли причина объявлять такие процессы, как npm или composer, как долго работающие контейнеры Compose, или вы можете использовать многоэтапную сборку, чтобы собрать все части в один автономный образ?

David Maze 19.01.2023 12:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
1
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны использовать ключ «--host», запуская свой Vite.

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