#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?