логотип PurpleSchool
логотип PurpleSchool

Разработка 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