Настройка Docker для Laravel позволяет разработчикам легко создавать и управлять средами разработки, обеспечивая консистентность между различными средами (например, локальной разработки, тестирования и продакшена). В этом обзоре мы рассмотрим, как настроить Docker для Laravel, включая создание Dockerfile, настройку Docker Compose и запуск Laravel в контейнере Docker.
Шаг 1: Создание Dockerfile
Dockerfile определяет, как создать образ Docker для вашего Laravel приложения. Создайте файл Dockerfile
в корне вашего проекта Laravel.
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=/usr/include/ --with-freetype=/usr/include/
RUN docker-php-ext-install gd
# Установка Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Настройка рабочего каталога
WORKDIR /var/www
# Копирование исходного кода приложения
COPY . /var/www
# Установка зависимостей Laravel
RUN composer install
# Настройка прав доступа
RUN chown -R www-data:www-data /var/www
# Команда для запуска
CMD ["php-fpm"]
Шаг 2: Настройка Docker Compose
Docker Compose позволяет определить и запустить многоконтейнерные приложения Docker. Создайте файл docker-compose.yml
в корне вашего проекта Laravel.
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
networks:
- laravel
nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "80:80"
volumes:
- ./:/var/www
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
networks:
- laravel
networks:
laravel:
driver: bridge
Шаг 3: Настройка Nginx
Создайте конфигурационный файл Nginx default.conf
в каталоге nginx
вашего проекта.
server {
listen 80;
index index.php index.html;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/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;
}
}
Шаг 4: Запуск Laravel в Docker
Чтобы запустить ваше Laravel приложение в Docker, выполните следующую команду в корне вашего проекта:
docker-compose up -d
Это создаст и запустит контейнеры для вашего Laravel приложения и Nginx, обеспечивая доступ к приложению через веб-браузер по адресу http://localhost
.
Заключение
Настройка Docker для Laravel позволяет разработчикам легко создавать и управлять средами разработки, обеспечивая консистентность между различными средами. Использование Dockerfile, Docker Compose и Nginx позволяет легко развернуть и запустить Laravel приложение в контейнере Docker, упрощая процесс разработки и тестирования.
0 комментариев