Хотите дальше читать devby? 📝
Support us

Как docker помог сэкономить время

Оставить комментарий
Как docker помог сэкономить время

Автор: Михаил Шишло 

docker

В один прекрасный день, примерно в обед, ко мне подошел тех. лид, и сказал: «Вот тебе, Миша, доступ по ssh на линуксовую машину, нужно развернуть сайт на wordpress к концу дня». Как бы так сказать... Настройка серверов – это не совсем мой конек, а до этого момента с wordpress я вообще только как читатель блогов сталкивался, поэтому я отнесся с некоторой долей скептицизма к поставленным к задаче срокам.

Однако в моей памяти на долю секунду всплыло слово docker. О данном инструменте я услышал впервые на одном из докладов митапа 4front. В нем речь велась о том, что с помощью докера можно создать рабочее окружение буквально за несколько минут. То, что нужно. И это еще раз подтверждает тот факт, что посещение митапов и конференций – это не всегда пустая трата времени.

Итак, с чего начать. Конечно, с установки докера. Стоит отметить, что установка идёт на чистую, только установленную версию ubuntu server v14. И тут нас ждет первый сюрприз. Для установки последней версии докера на ubuntu одного apt-get не достаточно. Следует выполнить следующую магию:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 
36A1D7869245C8950F966E92D8576A8BA88D21E9
sudo sh -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
sudo apt-get update
sudo apt-get install lxc-docker

Отлично, docker установлен, можно качать образы. Для wordpress, как пить дать, нужна база. Для нашего сайта достаточно mysql. Поэтому качаем два образа один для mysql и второй для wordpress – это следующие 2 команды:

sudo docker pull mysql
sudo docker pull wordpress

Супер, теперь осталось запустить контейнера для mysql и для wordpress – для этого предназначены такие команды:

sudo docker run --name wp-db -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql

 //запускает контейнер для mysql

sudo docker run --name web --link wp-db:mysql -p 80:80 -d wordpress

// запускает контейнер для wordpress

Заходим по 80 порту и нас там ждет скрин создания wordpress сайта.

docker

Вот так вот. Т.е если пренебречь танцами с бубном для установки докера на ubuntu, то, чтобы создать рабочее окружение, потребовалось выполнить всего 5 команд. Пять, Карл!!!

apt-get install docker.io
docker pull mysql
docker pull wordpress
docker run --name wp-db -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql
docker run --name web --link wp-db:mysql -p 80:80 -d wordpress

Такс, нам надо закачать исходники на контейнер с установленным wordpress. Установливать git в контейнер желания нету, поэтому решаю сделать shared папку с хостовой машиной. И тут ждет сюрприз номер 2: менять параметры в уже созданных контейнерах не получится. Поэтому приходится удалять контейнеры и заново их создавать, добавляя следующую опцию для shared папки:

docker run --name wp-db -e MYSQL_ROOT_PASSWORD=mysecretpassword -v 
/home/ubuntu/src:/external/src

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

docker run --name wp-db -e MYSQL_ROOT_PASSWORD=mysecretpassword --restart=always

Итак, окончательный вид команд для контейнеров такой:

docker run --name wp-db -e MYSQL_ROOT_PASSWORD=mysecretpassword 
--restart=always -v /home/ubuntu/src:/external/src -d mysql
docker run --name web --link wp-db:mysql -p 80:80 --restart=always -v 
/home/ubuntu/src:/external/src -d wordpress

Наступает еще один не менее прекрасный день. В обед подходит снова тех. лид и говорит: «Нужно нам тестовое окружение для проекта на wordpress». Я ему отвечаю: «Ты не успеешь дойти до своего стола, как уже будет готово!» – всего-то 2 команды выполнить.

И, действительно, 2 команды выполнены и еще 2 докер контейнера запущены на машине. И тут ждет сюрприз номер 3, самый неприятный, и я б сказал просто отвратительный.

4 запущенных докер контейнера просто отъели всю оперативную память (768 Mb) так, что по ssh попасть на сервер не представлялось возможным. А так как для тестовых контейнейров так же была установлена опция автоматического запуска, попасть на машину так и не удалось даже после перезрузки. Пришлось заново создавать сервер, благо на amazon это занимает не так много времени.

Чтобы обойти это проблему, было решено запустить один контейнер c mysql и там уже создать 2 базы – одну для продакшн сайта, а вторую для тестового. А также был выставлен memory limit для тестовогого сайта в 256Mb. Для этого есть опция:

docker run --name test-web --link wp-test-db:mysql -p 80:80 --restart=always -v 
/home/ubuntu/src:/external/src -d wordpress -m 256M

Что можно сказать в качестве вывода?

  1. Если Вам нужно развернуть промышленную среду, а у Вас мало времени или Вы не умеете этого делать, то используйте докер.
  2. Если Вам нужно одинаковую тестовую или девелопмент среду раздать всем членам команды, то используйете докер.
  3. Если Вы хотите создать образ своего окружения, чтобы потом была возможность перенести на другой физичиский сервер, то используйте докер.
  4. Если у Вас на сервере развернуто несколько независимых друг от друга систем, у которых входы и выходы должны быть под контролем для того, чтобы обеспечить их безопасность, используйте докер.
Помогаете devby = помогаете ИТ-комьюнити.

Засапортить сейчас.

Читайте также
10 курсов по SQL для лучшего понимания работы с большими данными (май, 2023)
10 курсов по SQL для лучшего понимания работы с большими данными (май, 2023)
10 курсов по SQL для лучшего понимания работы с большими данными (май, 2023)
Собрали 10 платных и бесплатных онлайн-курсов для изучения SQL. Программы рассчитаны на слушателей, которые только начинают или продолжают знакомство с языком.
Разработчик Ubuntu уходит из России
Разработчик Ubuntu уходит из России
Разработчик Ubuntu уходит из России
1 комментарий
«Комп стоимостью в 2-3 рабочих дня — тысячи % прибыли». На чём кодить хорошо
«Комп стоимостью в 2-3 рабочих дня — тысячи % прибыли». На чём кодить хорошо
«Комп стоимостью в 2-3 рабочих дня — тысячи % прибыли». На чём кодить хорошо
52 комментария
Linux теперь работает на Mac с чипами M1
Linux теперь работает на Mac с чипами M1
Linux теперь работает на Mac с чипами M1

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.