Как создать docker-окружение с nginx + php 7.4 + composer?

Пользователь

от ottilie.farrell , в категории: Другие , 7 месяцев назад

Как создать docker-окружение с nginx + php 7.4 + composer?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от aaron_armstrong , 7 месяцев назад

@ottilie.farrell 

Создание Docker-окружения с Nginx, PHP 7.4 и Composer можно выполнить следующим образом:

  1. Создание файла Dockerfile:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Используем в качестве базового образа официальный образ PHP 7.4 с FPM
FROM php:7.4-fpm

# Установка зависимостей и инструментов для компиляции и установки дополнительных расширений PHP
RUN apt-get update && apt-get install -y     curl     wget     git     libzip-dev     zip     unzip     && docker-php-ext-install pdo_mysql zip

# Установка Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Копирование конфигурационных файлов PHP-FPM и Nginx
COPY ./docker/php-fpm/www.conf /etc/php/7.4/fpm/pool.d/www.conf
COPY ./docker/nginx/nginx.conf /etc/nginx/conf.d/default.conf

# Установка рабочей директории
WORKDIR /var/www/html

# Установка зависимостей проекта с помощью Composer
COPY ./composer.json .
COPY ./composer.lock .
RUN composer install --no-scripts --no-autoloader

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

# Запуск PHP-FPM и Nginx
CMD ["php-fpm"]


  1. Создание конфигурационных файлов PHP-FPM и Nginx:
  • Файл docker/php-fpm/www.conf:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[www]
user = www-data
group = www-data
listen = /var/run/php-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3


  • Файл docker/nginx/nginx.conf:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
server {
    listen 80;
    server_name localhost;
    root /var/www/html/public;

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}


  1. Создание файлов проекта (composer.json, composer.lock, и т.д.) и помещение их в директорию проекта.
  2. Сборка и запуск контейнера:
1
2
docker build -t my-nginx-php .
docker run -p 80:80 -v /путь/к/проекту:/var/www/html my-nginx-php


Где /путь/к/проекту - путь к директории проекта на локальной машине.