Введение
Разработка приложений 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.