Разработка приложений 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.
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.
Шаг 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
Шаг 6: Настройка базы данных Laravel
Измените файл .env в вашем проекте Laravel, чтобы использовать службу MySQL:
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=user
DB_PASSWORD=password
Шаг 7: Миграция баз данных
Запустите миграцию Laravel, чтобы настроить базу данных:
docker-compose exec app php artisan migrate
Шаг 8: Доступ к приложению
Как только контейнеры будут запущены, вы можете получить доступ к приложению Laravel на сайте http://localhost:8000.
Заключение
Вы успешно создали среду разработки Laravel на базе Docker с интеграцией MySQL и настройкой Nginx.
Такая настройка повышает согласованность сценариев разработки и облегчает совместную работу команды.
Для дальнейшего совершенствования среды изучите дополнительные функции Docker и расширенные возможности Laravel.
см. также: