
Для разработки приложений на Laravel требуется стабильная и согласованная среда разработки. Docker, популярная платформа для контейнеризации, предлагает эффективный способ создания такой среды.
В этом подробном руководстве мы рассмотрим, как создать надежную среду разработки Laravel с помощью Docker — ведущей технологии контейнеризации. Руководство включает в себя шаги по интеграции MySQL и настройке Nginx, обеспечивающие бесперебойный процесс разработки.
Настройка проекта Laravel
Сначала создайте новый проект Laravel или перейдите в каталог существующего проекта. Если вы создаете новый проект, используйте Composer:
composer create-project --prefer-dist laravel/laravel my-laravel-app cd my-laravel-app
Структура проекта
my-laravel-app/ ├── .env ├── docker-compose.yml ├── Dockerfile ├── nginx.conf └── src/ └── ... Laravel файлы ...
Создание файла Dockerfile
Создайте Dockerfile в корневом каталоге вашего проекта Laravel. Этот файл использует образ PHP 8.2 и устанавливает необходимые расширения PHP вместе с Composer. Он описывает среду вашего приложения Laravel.
Dockerfile
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"]
Настройка Docker Compose
Создайте файл «docker-compose.yml» в корневом каталоге вашего проекта. Этот файл управляет вашими контейнерами Docker, определяя службы для Laravel (приложение), MySQL (база данных) и Nginx (веб-сервер). Он создаёт сеть для этих служб и том для MySQL.
docker-compose.yml
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
Этот файл определяет две службы: app
для вашего приложения Laravel и db
для MySQL. Он также настраивает сеть и том для хранения данных MySQL.
Настройка Nginx
Поместите файл nginx.conf в корневую папку вашего проекта, чтобы настроить сервер Nginx, необходимый для работы вашего приложения.
nginx.conf
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; } }
Запуск контейнеров
После настройки Dockerfile и docker-compose.yml вы можете запустить свои контейнеры.
docker-compose up -d
Настройка базы данных Laravel
Измените файл .env
в вашем проекте Laravel, чтобы использовать службу MySQL:
.env
DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=user DB_PASSWORD=password
Перенос баз данных
Запустите миграции Laravel, чтобы настроить свою базу данных:
docker-compose exec app php artisan migrate
Доступ к приложению
Как только контейнеры будут запущены, вы сможете получить доступ к приложению Laravel по адресу http://localhost:8000.

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