Олег Марков
Разработка Laravel в Docker
Введение
С каждым днем инструменты контейнеризации становятся все более популярными среди разработчиков благодаря своей способности создавать изолированные, повторяемые и масштабируемые среды. Docker - один из лидеров в этой сфере, и его использование с такими фреймворками, как Laravel, приносит значительные преимущества. В этой статье мы разберем, как создать и настроить среду разработки для Laravel в Docker, что позволит вам не только ускорить процесс разработки, но и стандартизировать ваше окружение.
Зачем использовать Docker с Laravel
Прежде чем погрузиться в детали, давайте рассмотрим, почему Docker полезен для разработки приложений на Laravel:
- Изоляция среды: Каждое приложение может работать в своей контейнеризированной среде, не влияя на другие приложения или системные настройки.
- Повторяемость: Docker контрели позволяют воспроизводить среду разработки или развертывания для других команд или серверов без неожиданных сюрпризов.
- Легкость в управлении зависимостями: Вместе с контейнером могут поставляться все необходимые зависимости, что исключает проблемы совместимости между различными версиями программного обеспечения.
Теперь, когда у нас есть общее представление о преимуществах, давайте рассмотрим, как вы можете настроить Docker для разработки Laravel.
Подготовка к установке
Для начала, убедитесь, что вы установили Docker и Docker Compose на свою систему. Они позволяют создавать и управлять многоконтейнерными средами. После установки Docker, проверьте, работают ли они корректно:
# Проверяем версию Docker
docker --version
# Проверяем версию Docker Compose
docker-compose --version
Если эти команды возвращают корректные версии, значит, установка прошла успешно.
Создание проекта Laravel
Сначала создайте директорию для вашего нового проекта Laravel и перейдите в неё:
mkdir my-laravel-app
cd my-laravel-app
Теперь создадим новый проект Laravel внутри контейнера Docker. Это гарантирует, что вы используете одно и то же PHP окружение на всех этапах разработки.
Dockerfile
Для начала, создадим Dockerfile
, который будет использовать версию PHP, рекомендованную для последней версии Laravel:
# Используем официальный PHP образ
FROM php:8.0-fpm
# Устанавливаем необходимые расширения и утилиты для Laravel
RUN apt-get update && apt-get install -y \
git \
zip \
unzip \
&& docker-php-ext-install pdo pdo_mysql
# Установка Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Установка Laravel
WORKDIR /var/www
docker-compose.yml
Этот файл позволит нам создать многоконтейнерное приложение, включая Laravel, MySQL и phpMyAdmin:
version: '3.8'
services:
app:
build:
context: .
volumes:
- .:/var/www
ports:
- "9000:9000"
db:
image: mysql:5.7
volumes:
- dbdata:/var/lib/mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravel
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
ports:
- "8080:80"
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: root
volumes:
dbdata:
В этом файле docker-compose.yml
, мы создаем три сервиса: app
, db
и phpmyadmin
. Каждый сервис представляет собой отдельный контейнер:
- app
- это наш основной контейнер с PHP и Laravel.
- db
- это контейнер базы данных MySQL.
- phpmyadmin
- веб-интерфейс для управления базой данных MySQL.
Установка проекта с Laravel
Запустите контейнеры с помощью Docker Compose:
docker-compose up -d
После этого зарегистрируйте новый проект Laravel:
docker-compose exec app composer create-project --prefer-dist laravel/laravel .
Этот шаг установит Laravel в рабочую директорию контейнера app
.
Запуск проекта
После установки Laravel, можно проверить проект по умолчанию в вашем веб-браузере, перейдя по адресу http://localhost:9000
. Если все настроено правильно, вы увидите приветственную страницу Laravel.
Заключение
Теперь вы увидели, как Docker может облегчить вам разработку с использованием Laravel. Используя Docker, вы можете сосредоточиться на кодировании, оставаясь уверенным в том, что ваша среда разработки стандартизирована и легко поддается тиражированию. Вы можете легко масштабировать ваше приложение и интегрировать множество сервисов без опасений, что какая-то часть окружения может не совпадать с ожиданиями.
Карта развития разработчика
Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile