Трудовыебудни

Как в docker-compose exec разово задать переменную окружения

Тоже достаточно повседневная задача — выполнить какую-либо команду в bash разово задав переменную окружения меняющую поведение данной команды. Например, в командной строке это может выглядеть так:

SYMFONY_ENV=prod composer install --no-dev
Однако, если выполнить это через docker-compose exec
docker-compose exec -u app php SYMFONY_ENV=prod composer install --no-dev
возникнет ошибка: (далее…)

Трудовыебудни

Как в Symfony 3.4 принудительно закрыть соединение с MySQL

Достаточно частая ситуация, когда скрипт закончил всю работу с базой и переходит к какой-то длительной обработке данных. В такой ситуации соединение с БД остаётся открытым, но никто им не пользуется, в результате чего при большой нагрузке другие клиенты могут получить ошибку:

MySQL: ERROR 1040: Too many connections
Незадачливый амин или разработчик моментально предложит увеличить количество соединений. Но будет ли это хорошим решением? Не всегда. (далее…)

Трудовыебудни

Работа с build arguments в docker-compose и Dockerfile

Как только вы сталкиваетесь с разворачиванием одного проекта на несколько окружений, моментально возникает необходимость использовать аргументы для сборки docker-контейнеров. Например, для разработки и тестирования нужно использовать одни лицензионные ключи, а для продакшена — другие. К счастью, сообщество Докера это предусмотрела и существует удобное решение этого вопроса. (далее…)

Трудовыебудни

Как в PHP composer подменить пакет на свой репозиторий

По сути это продолжение статьи как сделать git fork из github в bitbucket, т.к. одно из другого крайне бессмысленно. Допустим, есть какая-то хорошая публичная библиотека на github, нов ней есть фатальный недостаток, который автор библитеки не хочет, не может и не будет исправлять. При этом архитектура библиотеки такова, что нельзя просто так взять и отнаследоваться и переопределить поведение. А делать правку в коде и хранить весь этот хардкод в основном репозитории не позволяет здравый смысл. (далее…)

Трудовыебудни

Как сделать git fork из github в bitbucket

Довольно частая задача — сделать форк какой-либо библиотеки с github и разместить её в приватном репозитории в bitbucket, gitlab или ещё где. Чаще всего это нужно в тех ситуациях, когда нужно самостоятельно внести правки в исходную библиотеку, но по каким-то причинам в основной  публичный репозиторий это попасть не должно. Собственно, сперва нужно создать новый пустой реопзиторий, затем склонировать его себе:

git clone git@bitbucket.org:my/forked-repo.git
(далее…)

Трудовыебудни

Создание консольной команды CLI в Symfony 3.4

В отличии от Laravel, в Symfony создание консольных команд доведено до абсурда. Чтобы создать заготовку команды нужно выполнить:

php bin\console generate:command MyBundle command:name
Где нужно указать имя бандла в котором будет создана команда и имя команды, по которому она будет вызываться. Если запустить generate:command без аргументов, то в интерактивном режиме будут запрошены Bundle name и Command name, а затем ещё и подтвердить всё намерение: Do you confirm generation [yes]? После чего будет создана папка src/MyBundle/Command/ (если её ещё нет) и файл в ней: src/MyBundle/Command/CommandNameCommand.php Теперь можно вызвать свою команду так:
php bin\console command:name
(далее…)

Трудовыебудни

Как быстро проверить работоспособность прокси

Как проверить прокси в консоли Linux curl --proxy "user:pass@host:port" https://google.com Такой способ сработает в любом Linux-дистрибутиве с установленной библиотекой Curl. Также этот вариант будет работать в MacOs и даже Windows в cygwin! Однако, может возникнуть ошибка: curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none Если знаете как Read more

Трудовыебудни

Установка New Relic для PHP 7.1 в CentOs 7 в docker-контейнере

Что такое New Relic и зачем он нужен в этой заметке рассказывать не буду. А расскажу лишь кратко как установить newrelic agent внутрь docker-контейнера для мониторинга производительности приложения. Т.е. речь о APM — Application Performance Monitoring and Management. Рассмотрим 2 варианта: установку в уже запущенном контейнере и настройку через Dockerfile. В данной статье рассмотрена только установка APM-агента в образ docker, установка агента для мониторинга инфраструктуры внутри docker сложна и не имеет смысла. Инфраструктурный агент лучше установить в хостовую систему. (далее…)

Трудовыебудни

Как в Guzzle получить финальную ссылку после редиректа

Ещё одна повседневная задача — узнать адрес ссылки на которую был совершён редирект после HTTP-запроса. Однако, при работе с библиотекой Guzzle делается это не очень очевидно. Во-первых, нужно разрешить клиенту совершать редиректы: 'allow_redirects' => [ 'max' => 5, 'strict' => true]. Во-вторых, нужно включить запись редиректов: 'allow_redirects' => [ 'track_redirects' => true ]. В третьи, нужно прокинуть анонимную функцию с замыканием, которая запишет значение «эффективного» URL в замкнутую переменную. Всё вместе выглядит так: (далее…)