Существующий проект laravel в докер | Не может обслуживать каталог /var/www/html/

#php #laravel #docker

Вопрос:

Первый пользователь docker здесь. Я должен признать, что это действительно очень сложно.

Насколько я понимаю, при использовании docker вы должны стать экспертом по серверу и написать этот файл dockerfile со всеми инструкциями по настройке. Это особенно сложно, если вы разрабатываете в Windows и вам нужно написать образ для экземпляра docker, которым является linux.

У меня есть существующий проект laravel, который я получил от коллеги. Я не хочу устанавливать новые зависимости в своей системе, так как я беспокоюсь, что они все испортят, поэтому я хочу научиться использовать docker, чтобы иметь четкие границы между проектами с аналогичными зависимостями.

Что я сделал, чтобы перенести проект до сих пор:

Я создал файл Dockerfile в корневом каталоге проекта, который выглядит следующим образом:

 FROM php:8-apache  RUN docker-php-ext-install pdo pdo_mysql sockets RUN curl -sS https://getcomposer.org/installer​ | php --   --install-dir=/usr/local/bin --filename=composer  COPY --from=composer:latest /usr/bin/composer /usr/bin/composer  WORKDIR /app COPY . . RUN composer install  

Я нашел это в учебнике, и до сих пор это выглядит очень просто. Он установит PHP 8 и Apache.

Он отредактирует php.ini и раскомментирует/установит pdo_mysql

Он установит composer.

Я не уверен в команде КОПИРОВАНИЯ? Может быть, кто-нибудь может мне здесь помочь?

Он создаст новый каталог под названием «приложение» и поместит туда проект

Вторая КОПИЯ … просто говорит ему скопировать все файлы из корневого каталога в папку приложения

Он запустит установку composer в том же каталоге, поэтому установит все зависимости проекта laravel.


Я использую концентратор docker и предоставляю порт 5030 для запуска контейнера. Теперь при попытке доступа к проекту в браузере я получаю Запрещенный 403. В журналах я вижу проблему:

 [autoindex:error] [pid 21] [client 172.17.0.1:54280] AH01276:  Cannot serve directory /var/www/html/: No matching DirectoryIndex  (index.php,index.html) found, and server-generated directory index  forbidden by Options directive  

Проблема ясна. Apache хочет запустить приложение из каталога по умолчанию, в то время как приложение laravel запускается из собственной общей папки. Мне нужно будет вручную зайти в apache conf в контейнере и отредактировать его, но это не способ докера сделать это? Каждый раз, когда я создаю новое изображение, мне нужно будет повторять этот шаг вручную. Как бы я добавил его в рецепт Dockerfile?