Как отладить PHP скрипт в Windows 10 с помощью PHPStorm и xDebug внутри docker-контейнера находящимся на сервере за NAT?

Вопрос отладки PHP-скриптов будоражит умы многих разработчиков. Так же эта инструкция поможет и тем, кто Docker не использует. На самом деле всё очень просто, достаточно прокинуть порт с удалённого сервера на локальный (так называемый remote port forwarding или ssh tunnel), делается это одной командой, но требует предварительной правки конфигов. Начнём. […]

Как на Windows 10 скомпилировать из исходника на Go Lang бинарник для Linux?

Этой заметкой открываю новую рублику по программированию на Go Lang. Один из первых вопросов, которые пришлось решить — как пользователю Windows 10 скомпилировать исполняемый файл для Linux сервера? Процесс сборки бинарного файла на системе одного типа для системы другого типа называется кросскомпиляцией. Ответ достаточно прост, сначала нужно задать константы: set […]

Как запускать cron jobs для docker-контейнеров?

Следуя хорошим практикам работе с Docker, в каждом контейнере должно быть запущено одно и только одно приложение. Как только приложение завершает работу — контейнер останавливается. Эти ограничения заставляют посмотреть на работу с cron задачами по-другому. Конечно, законами физики не запрещено в каждый контейнер устанавливать более одного приложения и запускать крон […]

Оптимизация и тюнинг производительности MariaDB MySQL сервера внутри Docker

Пожалуй, это единственное актуальное и максимально полное руководство на русском языке по оптимизации MySQL сервера в docker-контейнерах. По сути большая часть советов отлично подойдёт и тем, кто не работает с Docker. Оптимизацию базы данных можно разделить на 3 слоя: Оптимизация запросов, таблиц и индексов Тюнинг параметров сервера баз данных Оптимальная […]

Как в docker-compose перезапустить запущенный контейнер с пересборкой

После редактирования Dockerfile или docker-compose.yml файла, например, прообрасывания порта или добавления волюма, изменения не вступают автоматически! Даже если сделать restart контейнера то всё-равно ничего не изменится. Чтобы применить изменения к контейнеру его нужно пересобрать (build).

Как в Docker отключить логирование всех контейнеров?

По-умолчанию в Docker для всех контейнеров устанавливается режим логирования json-file, т.е. весь STDOUT каждого контейнера будет писаться в файл. В целях отладки это может быть полезно, однако большой поток логов и их запись на диск может занять больше ресурсов, чем полезная нагрузка. Достаточно спорное решение, особенно для тех, кто имел опыт […]

Как в CentOS отследить нагрузку на диск?

iostat -xk -t 5 Если же такой команды нет, то нужно установить пакет sysstat: yum install sysstat Ещё одна интересная утилита — iotop, своеобразный аналог top или htop, но для дисковой подсистемы. О том как сделать профилирование нагрузки на файловую систему с помощью iostat и gnuplot можно прочитать в этой […]

Использование Redis внутри Docker в продакшене как основное хранилище данных

Redis очень неплох. Всё больше разработчиков и компаний выбирают его не только в качестве кэширующего in-memory сервиса или системы очередей, но в и в качестве основного хранилища данных, взамен MySQL или Postgres. Да, именно так. Благодаря поддержке разнообразных структур данных, таких как: строки, списки, множества, упорядоченные множества и хэш-таблицы, на […]