Использование Docker с Laravel может значительно упростить процесс разработки, тестирования и развертывания ваших приложений, обеспечивая консистентность между различными средами разработки и производства. В этом руководстве мы рассмотрим, как настроить и использовать Docker для разработки и развертывания Laravel-приложений.

Шаг 1: Установка Docker

Перед началом убедитесь, что у вас установлен Docker. Если нет, скачайте и установите его с официального сайта Docker.

Шаг 2: Создание Dockerfile

Создайте файл Dockerfile в корне вашего Laravel-проекта. Этот файл определяет, как будет собираться ваш Docker-образ.

FROM php:7.4-fpm

# Установка зависимостей
RUN apt-get update && apt-get install -y \
    build-essential \
    libpng-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    locales \
    zip \
    jpegoptim optipng pngquant gifsicle \
    vim \
    unzip \
    git \
    curl

# Установка расширений PHP
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
RUN docker-php-ext-configure gd --with-jpeg-dir=/usr/include/ --with-freetype-dir=/usr/include/
RUN docker-php-ext-install gd

# Установка Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Установка Node.js и npm
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get install -y nodejs

# Установка Xdebug (опционально)
RUN pecl install xdebug && docker-php-ext-enable xdebug

# Настройка рабочего каталога
WORKDIR /var/www

# Копирование файлов проекта
COPY . /var/www

# Установка зависимостей проекта
RUN composer install

# Копирование файла .env и генерация ключа приложения
COPY .env.example .env
RUN php artisan key:generate

# Настройка прав доступа
RUN chown -R www-data:www-data /var/www

# Запуск сервера
CMD ["php-fpm"]

Шаг 3: Создание файла docker-compose.yml

Создайте файл docker-compose.yml в корне вашего проекта для определения и запуска вашего приложения и связанных с ним сервисов (например, базы данных).

version: '3'
services:
 app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: laravel_app
    restart: unless-stopped
    tty: true
    environment:
      SERVICE_NAME: app
      SERVICE_TAGS: dev
    working_dir: /var/www
    volumes:
      - ./:/var/www
      - ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
    networks:
      - app-network

 db:
    image: mysql:5.7
    container_name: mysql_db
    restart: unless-stopped
    tty: true
    ports:
      - "4306:3306"
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_ROOT_PASSWORD: root
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    networks:
      - app-network

networks:
 app-network:
    driver: bridge

Шаг 4: Сборка и запуск контейнеров

В терминале перейдите в каталог вашего проекта и выполните следующую команду для сборки и запуска контейнеров:

docker-compose up -d

Эта команда соберет Docker-образы для вашего приложения и базы данных, а затем запустит их в фоновом режиме.

Шаг 5: Настройка Laravel для работы с Docker

Откройте файл .env вашего Laravel-проекта и обновите настройки базы данных, чтобы они соответствовали конфигурации вашего Docker-контейнера:

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root

Шаг 6: Использование Laravel с Docker

Теперь вы можете использовать Laravel как обычно, выполняя команды Artisan, миграции базы данных и т.д., внутри вашего Docker-контейнера.

Заключение

Использование Docker с Laravel может значительно упростить процесс разработки и развертывания, обеспечивая консистентность между различными средами. Это руководство дает базовое представление о том, как настроить и использовать Docker для Laravel-приложений. Вы можете расширить его, добавив дополнительные сервисы, такие как Redis, Elasticsearch и другие, в зависимости от потребностей вашего проекта.