Иногда для тестирования какой-либо библиотеки или шаблона требуется быстро развернуть отдельное окружение для разработки. Данная заготовка PHP-проекта как раз предназначена для таких задач. Она включает в себя PHP (+xDebug), NGINX и MySQL. Репозиторий на GitHub.
Основные файлы
docker-compose.yml
version: '3.7'
services:
nginx:
image: nginx
volumes:
- ./:/app
- ./docker/nginx/default.nginx:/etc/nginx/conf.d/default.conf
ports:
- "80:80"
depends_on:
- php
networks:
- default
php:
build:
context: ./docker/php
volumes:
- ./:/app
- ./docker/php/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
environment:
- PHP_IDE_CONFIG=serverName=mytestservername
db:
image: mysql:5.7
restart: always
environment:
- MYSQL_DATABASE=my_database_name
- MYSQL_USER=my_user_name
- MYSQL_PASSWORD=my_user_password
- MYSQL_ROOT_PASSWORD=my_root_password
- MYSQL_ROOT_HOST:%
ports:
- '3306:3306'
expose:
- '3306'
volumes:
- ./docker/mysql:/var/lib/mysql
networks:
- default
networks:
default:
driver: bridge
composer.json
{
"name": "vendor-name/package-name",
"type": "project",
"description": "Description of the project.",
"license": "MIT",
"require": {},
"require-dev": {},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
}
}
docker/php/Dockerfile
FROM php:8.0-fpm
RUN apt-get update && apt-get install -y \
libzip-dev \
zip \
&& docker-php-ext-configure zip \
&& docker-php-ext-install zip \
&& docker-php-ext-install mysqli
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /app
docker/php/xdebug.ini
[xdebug]
xdebug.mode = debug
xdebug.client_host = host.docker.internal
docker/nginx/default.conf
server {
listen 80;
root /app/public;
index index.php;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php: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;
}
}
Комментарии (0)