Блог

Сергей Сенаторов

Name: Sergey Senatorov

FullStack developer

from siberia with love

current: Moscow

Блог Сергея Сенаторова

Docker: быстрый запуск контейнеров

Один из вариантов простого запуска контейнеров – использовать docker-compose. Чтобы он заработал его нужно дополнительно установить из пакетов. В установках на Windows и Mac он уже изначально включен в поставку.

Достаточно описать yml файл и запустить его. В интернете можно найти большое количество готовых файлов по запросу ‘docker compose’. Эти файлы помогают комбинировать отдельные контейнеры в окружения под ваш проект. Допустим, вам для проекта необходимо поднять связку: nginx, php-fpm, elasticsearch, rabbit, memcache – все это можно реализовать в одном docker-compose файле и запускать, что называется, «в один клик».

Небольшой список базовых команд, которые вам могут пригодиться:

Собрать и запустить контейнер в фоновом режиме с помощью docker-compose

docker-compose up --build -d

Простой редирект с устройств Ipad, Iphone, Android

Простой редирект с использованием регулярки.
$data = [
    'iphone' => '/iphonepage.php',
    'android' => '/androidpage.php',
    'defaultlink' => '/404.php'
];
preg_match('/Android|iPhone|iPad|defaultLink/', $_SERVER['HTTP_USER_AGENT'].'defaultLink', $matches);
header("Location: ".$data[strtolower($matches[0])]);

Ссылки на сайт с удаленного сервера ?

Иногда количество медиа контента который тянется с тестовой копии достаточно большой. В таком случае на локальной копии имеет смысл заменить ссылки на сайт с удаленного сервера.
Для Apache это можно зделать следующим образом:

Правила для .htaccess
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://yoursite.ru/$1 [R,NC,L]

Проблема которая может возникнуть в таком случае это ресайз изображения. Система будет проверять их физическое наличие. Иногда это бывает важно. Чтобы изображения подтягивались уже отресайзеные, можно заменить условие в ядре. В таком случае мы убираем проверку на физическое наличие файла и ссылка идет уже на изображение с ресайзом.

/bitrix/modules/main/classes/general/file.php:1552 //elseif (!file_exists($io->GetPhysicalName($_SERVER["DOCUMENT_ROOT"].$cacheImageFileCheck)))

Либо чтобы избавится от исправлений внутри ядра, можно обернуть ресайз в него и добавить условие там. Как реализовать, решать вам.