@ottilie.farrell
Создание Docker-окружения с Nginx, PHP 7.4 и Composer можно выполнить следующим образом:
- Создание файла 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"]
|
- Создание конфигурационных файлов 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;
}
}
|
- Создание файлов проекта (composer.json, composer.lock, и т.д.) и помещение их в директорию проекта.
- Сборка и запуск контейнера:
1
2
|
docker build -t my-nginx-php .
docker run -p 80:80 -v /путь/к/проекту:/var/www/html my-nginx-php
|
Где /путь/к/проекту
- путь к директории проекта на локальной машине.