Архив метки: nginx

Как перенести WordPress сайт в Docker

WordPress в Docker

Ни один из моих блогов на WordPress не установлен в Docker контейнерах, и об этом я жалею с самого момента их создания. Мне хватило всего пары недель, чтобы забыть, как именно настроены сервера, зачем на них включена та или иная фича, и теперь во время каждого апдэйда приходится молиться всем известным богам программирования, потому что если что-то пойдёт не так, я уже без понятия, как это разруливать. Даже просто перенести сайт на новый сервер было бы подвигом.

С Докер контейнерами таких проблем бы не было. Взял Dockerfile или docker-compose.yml, взял volumes с данными, перенёс на другую машину, и всё. Можно было бы даже запустить реплики блогов дома, чтобы на них экспериментировать, проверять апдэйты и надругивать новые фичи.

Но не всё потеряно. Прогрессирующее старпёрство мне уже не позволит просто так вот взять и выкатить Docker в свой «продакшен», но создать локальную докеризированную реплику одного из блогов определённо можно. А там, если всё пойдёт нормально, можно и в большой интернет. Читать далее Как перенести WordPress сайт в Docker

Краткое введение в Docker Swarm mode

docker swarmDocker — прекрасен. С ним можно упаковать приложение по контейнерам, забросить их на случайный хост, и всё будет просто работать. Но на одном хосте особо не отмасштабируешься. Да и если хост прикажет долго жить, всё приложение отправится на тот свет вместе с ним. Конечно, для масштабирования можно завести сразу несколько хостов, объединить их при помощи overlay сети, так что и места больше будет, и возможность для контейнеров общаться останется.

Но опять же, как всем этим управлять? Хосты всё ещё могут отмирать. Как быстро определить, какой именно? Какие контейнеры на нём были? Куда теперь их переносить?

Начиная с версии 1.12.0 Docker может работать в режиме Swarm («Рой». В старых версиях был просто Docker Swarm, но тот работал по-другому), и потому способен решать все эти проблемы самостоятельно. Читать далее Краткое введение в Docker Swarm mode

Как создать overlay сеть без Docker Swarm

В Docker, среди его разнообразия типов сетей, есть один особенно интересный — overlay. Overlay сеть может охватывать сразу несколько хостов таким образом, что, например, контейнер веб-приложения на хосте 1 может общаться по имени с контейнером базы данных на хосте 2, как если бы они были на одной машине.

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

Конечно, Докер можно запустить в Swarm режиме, и тогда проблема исчезнет сама собой. Но и без Swarm, как оказалось, это очень легко устроить.

Читать далее Как создать overlay сеть без Docker Swarm

Взаимодействие Docker контейнеров

Запустить приложение в контейнере это, конечно, интересно, но еще интереснее запустить сразу несколько и разрешить им между собой взаимодействовать. Допустим, вдоволь наигравшись с микросервисами, я решил разделить своё настоящее вэб-приложение на:

  1. контейнер со статическим контентом и вэб-сервером и
  2. контейнер с данными и RESTful сервисом.

Первый контейнер открывает 80й порт, самостоятельно раздаёт html/css/js и обращается ко второму контейнеру, когда приходит запрос на данные.

Схема приложения

Схема простая, кроме одного «но». Как первому контейнеру найти и достучаться до второго?

Читать далее Взаимодействие Docker контейнеров

Эксперименты с микросервисами

Недавно на работе меня попросили сделать мини-проект: динамическую страницу со слайдами для одного из настенных проекторов. Они развешаны по всему офису, и показывают на стенах разную актуальную информацию: статистики по клиентам, задержки при передаче пакетов от одного сервера к другому, кто над чем работает, и т. п. Мне же нужно было добавить статистику по релизам и билдам: сколько времени занимает билд, какие тесты упали, какие нестабильные, и что там еще может мотивировать разработчиков на подвиг. Вся эта информация лежит в Google BigQuery, и её нужно просто собрать и грамотно представить. Ничего сложного. Читать далее Эксперименты с микросервисами