Как сделать чтобы проект на Laravel + Vue в Docker монтировался?

Для того чтобы проект на Laravel + Vue.js монтировался в Docker, вам понадобится создать Docker-контейнер, включая нужные зависимости и настроить монтирование файлов.

Вот пошаговая инструкция, как это можно сделать:

Шаг 1: Создайте Dockerfile
Создайте файл с именем "Dockerfile" в корневой директории вашего проекта. Для начала, вы можете использовать базовый образ с PHP и Nginx, например:

FROM php:7.4-fpm

RUN apt-get update && apt-get install -y 
        curl 
        git 
        unzip 
        libzip-dev 
        libpng-dev 
        libonig-dev 
        libxml2-dev 
        zip 
        nano 
        nginx

# Установка Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Переносим конфигурацию PHP
COPY ./docker/php.ini /usr/local/etc/php/conf.d/docker-php.ini

# Установка расширений PHP
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip

# Создание рабочей директории
WORKDIR /var/www/html

# Копирование файлов проекта
COPY . /var/www/html

# Устанавливаем зависимости Laravel
RUN composer install --no-dev --optimize-autoloader

# Генерируем ключ приложения Laravel
RUN php artisan key:generate

# Настройка прав доступа
RUN chown -R www-data:www-data /var/www/html 
    && chmod -R 775 /var/www/html/storage

# Копируем файл настроек nginx
COPY ./docker/default.conf /etc/nginx/sites-available/default

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

Вышеуказанный Dockerfile устанавливает необходимые зависимости, копирует необходимые файлы проекта, устанавливает зависимости Laravel, генерирует ключ приложения, настраивает права доступа и запускает Nginx для обслуживания приложения.

Шаг 2: Создайте файл default.conf
Создайте файл с именем "default.conf" в папке "docker", которая находится в корневой директории проекта. Файл конфигурации Nginx выглядит следующим образом:

server {
    listen 80;
    server_name localhost;
    root /var/www/html/public;

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        fastcgi_pass php-fpm:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Этот конфигурационный файл настраивает Nginx на обслуживание файлов из папки "public" в корневой директории вашего проекта и на отправку запросов PHP-скриптам в контейнере PHP-FPM.

Шаг 3: Запустите контейнер
Откройте терминал и перейдите в корневую директорию вашего проекта. Затем выполните следующую команду для сборки и запуска Docker-контейнера:

docker build -t my-laravel-vue-app .
docker run -d -p 8080:80 --name my-laravel-vue-app -v $(pwd):/var/www/html my-laravel-vue-app

Команда "docker build" создает Docker-образ на основе файла Dockerfile, а команда "docker run" запускает контейнер, пробрасывая порт 8080 на хостовую машину и монтируя текущую директорию в контейнер.

Теперь ваш проект на Laravel + Vue.js должен быть доступен по адресу http://localhost:8080.

Это полное решение для запуска проекта на Laravel + Vue.js внутри Docker-контейнера с монтированием файлов.