Заготовка PHP-проекта

Иногда для тестирования какой-либо библиотеки или шаблона требуется быстро развернуть отдельное окружение для разработки. Данная заготовка 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;
    }
}

29.05.2021

Категория(-и): Docker, PHP, Сниппеты

Добавить комментарий