Как настроить Laravel с помощью Dockerfile и Docker-Compose

1 feb 2024 2 min di lettura
Как настроить Laravel с помощью Dockerfile и Docker-Compose
Indice dei contenuti

Введение

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

Предварительные условия

  • Базовые знания Laravel, Docker и MySQL.
  • Docker и Docker Compose установлены на вашем компьютере.

Шаг 1. Настройка проекта Laravel

Сначала создайте новый проект Laravel или перейдите в существующий каталог проекта. Если вы создаете новый проект, используйте Composer:

composer create-project --prefer-dist laravel/laravel my-laravel-app
cd my-laravel-app

Шаг 2. Создание файла Dockerfile

Разработайте Dockerfile в корне вашего проекта Laravel. Этот файл использует образ PHP 8.2 и устанавливает необходимые расширения PHP вместе с Composer. Опишите среду вашего приложения Laravel.

FROM php:8.2-fpm

 # Install dependencies
 RUN apt-get update && apt-get install -y \
 libpng-dev \
 libonig-dev \
 libxml2-dev \
 zip \
 unzip

 # Clear cache
 RUN apt-get clean && rm -rf /var/lib/apt/lists/*

 # Install PHP extensions
 RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

 # Get latest Composer
 COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

 # Expose port 9000 and start php-fpm server
 EXPOSE 9000
 CMD ["php-fpm"]

Шаг 3. Настройка Docker Compose

Создайте файл «docker-compose.yml» в корне вашего проекта. Этот файл управляет вашими контейнерами Docker, определяя службы для Laravel (приложение), MySQL (база данных) и Nginx (веб). Он устанавливает сеть для этих служб и том для MySQL.

version: '3'
 services:
 app:
 build:
 context:.
 dockerfile: Dockerfile
 image: my-laravel-app
 container_name: my-laravel-app
 restart: unless-stopped
 tty: true
 environment:
 SERVICE_NAME: my-laravel-app
 SERVICE_TAGS: dev
 working_dir: /var/www/html
 volumes:
 -./:/var/www/html
 networks:
 - app-network

 db:
 image: mysql:8
 container_name: my-laravel-mysql
 restart: unless-stopped
 tty: true
 ports:
 - "13306:3306"
 environment:
 MYSQL_DATABASE: laravel
 MYSQL_USER: user
 MYSQL_PASSWORD: password
 MYSQL_ROOT_PASSWORD: password
 SERVICE_TAGS: dev
 volumes:
 - dbdata:/var/lib/mysql
 networks:
 - app-network

 # Nginx Service
 web:
 image: 'nginx:alpine'
 ports:
 - "8000:80"
 volumes:
 -./:/var/www/html
 -./nginx.conf:/etc/nginx/conf.d/default.conf
 depends_on:
 - app
 networks:
 - app-network

 networks:
 app-network:
 driver: bridge

 volumes:
 dbdata:
 driver: local

Этот файл определяет две службы: приложение для вашего приложения Laravel и db для MySQL. Он также настраивает сеть и том для сохранения данных MySQL.

Шаг 4. Развертывание конфигурации Nginx

Поместите файл nginx.conf в корень вашего проекта, чтобы настроить сервер Nginx, который необходим для обслуживания вашего приложения.

server {
 listen 80;
 index index.php index.html;
 error_log /var/log/nginx/error.log;
 access_log /var/log/nginx/access.log;
 root /var/www/html/public;

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

 location ~ \.php$ {
 try_files $uri =404;
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_pass app:9000;
 fastcgi_index index.php;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 }

 location ~ /\.ht {
 deny all;
 }
 }

Шаг 5. Запуск контейнеров

С помощью Dockerfile и настройки docker-compose.yml вы можете запускать свои контейнеры.

docker-compose up -d

Шаг 5. Настройка базы данных Laravel

Отредактируйте файл .env в своем проекте Laravel, чтобы использовать службу MySQL:

DB_CONNECTION=mysql
 DB_HOST=db
 DB_PORT=3306
 DB_DATABASE=laravel
 DB_USERNAME=user
 DB_PASSWORD=password

Шаг 6. Миграция баз данных

Запустите миграцию Laravel, чтобы настроить базу данных:

docker-compose exec app php artisan migrate

Шаг 6: Войдите в приложение

Как только контейнеры будут запущены и начнут работать. Вы можете получить доступ к приложению Laravel по адресу http://localhost:8000.

Заключение

Вы успешно создали среду разработки Laravel на базе Docker с интеграцией MySQL и настройкой Nginx. Эта конфигурация повышает согласованность сценариев разработки и облегчает совместную работу группы. Чтобы еще больше усовершенствовать свою среду, углубитесь в дополнительные функции Docker и расширенные функции Laravel.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.