Giter VIP home page Giter VIP logo

local-docker's Introduction

Docker под 1С-Битрикс.

Сборка представляет собой связку: nginx + php-fpm + mysql + memcached + redis

В отличие от сборки https://github.com/BendeRsay/docker предназначена для использования внутри проекта, в папке /local.

Поддерживает технологию композитный сайт. Работает в https или http.

Здесь и дальше localhost может быть изменен на любой домен, который указывается в .env, а так же в вашем локальном .hosts

Для работы https локально требуется установить корневой сертификат ssl в браузере.

Есть phpmyadmin для просмотра БД. http://localhost:8181/

Есть mailhog для просмотра почты. http://localhost:8025/

порты могут отличаться, зависит от настроек в .env

PHP: 7.2, 7.3, 7.4, 8.0, 8.1, 8.2, 8.3

MySql: 5.7, 8

ВАЖНО

Запускать проект не от root пользователя - иначе возникает проблема с правами в контейнере.

Использование Docker без sudo

Установка

Клонируем проект

git clone https://github.com/BendeRsay/local-docker.git

Настраиваем окружение в файле .env в случае необходимости

NGINX_HOST должен совпадать с настройками Главного модуля, "URL сайта (без http://, например www.mysite.com)". При запуске одновременно нескольких проектов, порты на контейнеры должны отличаться.

Настраиваем cron в файле /local/docker/images/cron/crontab

Закрываем доступ к служебным файлам, к примеру через .htaccess при использовании apache.

Список файлов: /local, .env.example, .gitattributes, .gitignore, docker-compose.yml, Makefile, README.md

Собираем базовый образ php и cron в нужном порядке

make dc-build

Запускаем docker

make dc-up

Рекомендуется всегда пользоваться командами make dc-up и make dc-down для запуска и остановки проекта в docker. В make dc-up происходит установка домена и ip nginx в файл .hosts контейнера php.

Структура проекта

-- local/docker
    -- bash_history # папка для хранения истории bash контейнеров
    -- conf # конфиги nginx и пр.
    -- dump # папка для дампов БД
    -- images # папка с docker образами
-- .env.example # пример файла `.env`
-- .gitignore # список игнорирования GIT
-- Makefile # команды make. Список команд make можно посмотреть так: `make` или `make help`
-- docker-compose.yml # конфиг контейнеров
-- README.md # этот файл

memcached

Пример кэширования в memcached, настройки файла bitrix/.settings.php

return [
//...        
    'cache' =>
        array(
            'value' => array(
                'type' => array(
                    'class_name' => '\\Bitrix\\Main\\Data\\CacheEngineMemcache',
                    'extension' => 'memcache'
                ),
                'memcache' => array(
                    'host' => 'memcached',
                    'port' => '11211',
                ),
                'sid' => $_SERVER["DOCUMENT_ROOT"] . "#01"
            ),
            'readonly' => false,
        ),

Подробнее в https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=2795#cache

redis

Пример хранения данных сессии в redis, настройки файла bitrix/.settings.php

return [
//...        
    'session' => [
        'value' => [
            'mode' => 'default',
            'handlers' => [
                'general' => [
                    'type' => 'redis',
                    'host' => 'redis',
                    'port' => '6379',
                ],
            ],
        ],
    ],
];

Подробнее в https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=14026&LESSON_PATH=3913.3435.4816.14028.14026

Отладка и профилирование

Xdebug

Документация

Расширения для браузеров

В php.ini нашего контейнера с PHP имеется секция xdebug, где прописываются параметры для работы с Xdebug.

Пример параметров:

xdebug.idekey = www-data
xdebug.mode = develop, debug, coverage
xdebug.start_with_request=trigger
xdebug.trigger_value=startXdebug
#xdebug.log="/var/www/html/xdebug.log"

О параметрах:

Параметр Описание
xdebug.idekey ключ IDE
xdebug.mode возможные режимы работы
xdebug.start_with_request как будет запускаться. Подробнее
xdebug.trigger_value значение для активации триггера. Подробнее
xdebug.log путь до логов. Если не работает xdebug - смотрим логи

Настройка в IDE:

PhpStorm

Документация от PhpStorm

  1. Открываем список серверов Settings -> PHP -> Servers
  2. Добавляем новый сервер с любым названием. Хост указываем тот, по которому заходим на сайт локально без указания протокола (нужен только порт 80 или 443)
  3. Включаем маппинг и для корня проекта указываем /var/www/html
  4. Открываем Run -> Edit Configurations...
  5. Нажимаем на + и выбираем PHP Remote Debug
  6. Вводим любое имя, выбираем из выпадающего списка наш сервер, указываем IDE key (обычно PHP_STORM). Дополнительно в пункте Pre-configuration можно провести валидацию. Сохраняем
  7. Ставим точки остановки, включаем прослушивание (телефонная трубка в правом верхнем углу) и открываем нужную страницу в браузере
VS Code

Для начала установим расширение для работы с xdebug. Подробнее об установке расширения.

Настраиваем launch.json:

{
    "name": "Listen for Xdebug",
    "type": "php",
    "request": "launch",
    "port": 9003,
    "log": true,
    "externalConsole": false,
    "pathMappings": {
      "/var/www/html": "${workspaceFolder}"
    },
    "hostname": "localhost"
}

port - должен совпадать с портом из настроек в php.ini. А там по умолчанию 9003.

pathMappings - слева путь внутри контейнера PHP. Справа путь на нашей машине. ${workspaceFolder} - указывает на нашу рабочую область/текущий проект в VS Code.

hostname - Очень важный параметр для windows (wsl2), если его не указать, то VS Code не ловит запросы от Xdebug.

Подробней про отличие настроек xdebug 2 и xdebug 3

Подробней про параметры в launch.json

local-docker's People

Contributors

bendersay avatar

Stargazers

 avatar  avatar

Watchers

 avatar

local-docker's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.