середа, 9 травня 2018 р.

Docker для веб-розробки в Ubuntu 18.04



Давно чув про Docker контейнери та все не було часу спробувати. Ще й перші експерименти були невдалими. Але ось я перевстановив ОС і виникло питання: знову налаштовувати LAMP (Linux+Apache+MySQL+PHP) чи таки скористатися Docker.

Довелося почитати пояснення, що це таке і з чим його їдять. А також особливості встановлення та налаштування. Мабуть поки що моє розуміння неповне, а можливо, в дечому й помилкове.

Та, здається, нарешті я зрозумів переваги Docker для веб розробника. Адже, коли ви працюєте з рідним веб сервером, при додаванні нового сайту необхідно лізти в конфігурацію та додавати VirtualHost, створювати БД в MySQL та контролювати, щоб нові бази не заважали старим. Для редагування файлів у /var/www/html слід мати відповідні права. А постійно запущені процеси Apache та MySQL займають ресурси системи. Тому для частого переключення між багатьма веб-проектами рідне середовище не дуже зручне.

Докер дозволяє мати образ середовища, де встановлені необхідні компоненти. А файли /var/www/html прив'язувати зі свого робочого каталогу. Те саме можна робити і з БД. Один і той самий образ середовища підходить для всіх проектів. Просто зупиняєш один контейнер, а потім запускаєш інший (в іншому робочому каталозі проекту). Якщо розробників декілька, то з використанням Docker можна бути більш впевненим, що в кожного з них однаково налаштоване середовище.

Насправді застосування Docker набагато ширше і має значну кількість можливостей і опцій. Але сконцентруємося саме на розгортанні середовища веб-розробки. І побіжно оцінимо використання пам'яті контейнерами.

Отже, для роботи необхідно встановити пакети docker.io та docker-compose з офіційного репозиторію ОС. Новіша версія docker - docker-ce, але для її встановлення треба підключати додаткові репозиторії. Незабаром, схоже, планується міграція docker-ce в основний репозиторій debian/ubuntu. От і почекаємо цього моменту. Наше встановлення просте:

sudo apt-get install docker.io docker-compose

Не забуваємо додати себе до групи docker. Тоді всі подальші дії відбуватимуться без sudo та авторизації. Команда:

sudo usermod -a -G docker $USER

Не забуваємо перелогінитися після зміни переліку груп користувача.

Після встановлення можна запускати docker, командою:
sudo systemctl start docker

Це ще ніяке не середовище розробки, а просто система віртуалізації на рівні контейнерів. Якщо треба поставити її в автозапуск, то слід активувати docker сервіс в systemd командою:

sudo systemctl enable docker

Наступним кроком є створення docker-compose.yml. Це текстовий файл з описом, які контейнери запускати, як їх прив'язувати до основної системи і як імпортувати з основної системи файли для /var/www/html та базу даних. В інтернеті є багато варіантів цього файлу для різних потреб. Я собі обрав один з найпростіших (замість MySQL взяв MariaDB):

# ./docker-compose.yml

version: '3'

services:
  db:
    image: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: test
      MYSQL_USER: user
      MYSQL_PASSWORD: pass
    volumes:
      - ./mysql:/var/lib/mysql
    ports:
      - "3306:3306"
  web:
    image: php:7.2.2-apache
    container_name: php_web
    depends_on:
      - db
    volumes:
      - ./html/:/var/www/html/
    ports:
      - "80:80"
    stdin_open: true
    tty: true
Тепер можна створювати і запускати описані вище контейнери.
docker-compose up -d #створення (за потреби) і запуск контейнерів

docker-compose stop #зупинка контейнерів

А на останого кілька слів щодо використання пам'яті.
  • 30Мб - docker лише система віртуалізації
  • 120Мб - два контейнери згідно мого yml файлу
Небагато, як на мене.

Джерела:

Як я встановлював Xubuntu 18.04

Давно відчував потребу цілковито оновити свій Xubuntu 16.04. Адже стара система пережила кілька оновлень поверх старих Xubuntu 12.04, 13.10, 14.04 тощо. В ній накопичилося купа непотрібних сервісів, про існування яких я вже й забув. Але про їх існування постійно нагадував величезний час завантаження і вимкнення ПК (більше 2 хв). Нарешті це мені остаточно набридло, ще й причина підвернулася відповідна - вийшов реліз Xubuntu 18.04.

Дістав, я стару свою інсталяційну флешку  і спробував встановити на неї образ LiveCD. Довелося навіть перерозподілити партиції на флешці. Тобто встановлення получилося геть з нуля. Саме це стало приводом написання статті "як я встановлював Xubuntu 18.04". Вийшла така собі міні інструкція:

  • Качаємо образ Xubuntu 18.04 для 64 розрадної системи з офіційного сайту. Я скористався можливістю завантажити через торент (5хв при наявності хорошого інтернету).
  • За допомогою GParted ділимо флешку так, щоб перший primary розділ залишився видимий всяким Windows, TV та іншим системам (використовуємо на ньому старенький FAT32). Плюс до нього додаємо розділ для інсталятора Linux (2Gb цілком достатньо). Розділ для Linux робимо теж primary, але другим по порядку і форматуємо в ext4. На всякий випадок ставимо прапорець boot partition. (5 хв)
  • За допомогою unetbootin встановлюємо щойно завантажений образ на інсталяційний розділ флешки. Unetbootin має можливість створювати persistent installation (коли на флешці резервується місце для збереження файлів користувача). Таким чином можна отримати систему, яка працюватиме на будь-якому ПК відразу з флешки і яка зберігатиме зміни користувача між сеансами (в т.ч. документи). (5хв)
  • Завантажуємося із щойно створеного носія і встановлюємо Xubuntu 18.04 на свій ПК. (15хв).
Вся процедура зайняла лише півгодини. Ми отримали флешку з інсталятором і, за потреби, робочим переносним Лінуксом. Для виконання процедури нам знадобилося лише 2 інструменти - GParted та Unetbootin. Якщо їх немає на вашому комп'ютері, то їх можна встановити (unetbootin поки що не входить в офіційні репозиторії, тому треба підключити ppa репозиторій розробника):

sudo add-apt-repository ppa:gezakovacs/ppa
sudo apt-get update
sudo apt-get install gparted unetbootin

До речі існує unetbootin і для Windows. Тож створити завантажувальний usb-Linux можуть навіть користувачі Win.

Кілька слів про оновлений дистрибутив:
  • По-перше він доволі стабільний.
  • По-друге - очевидних змін небагато: Linux Kernel 4.15.0-20, LibreOffice 6, Firefox 59.0.2, GIMP 2.10, Inkskape 0.92, Thunderbird 52.7.0.
  • Приємно вразила легкість підключення JBL колонки до ПК по bluetooth (більше не треба нічого додаткового встановлювати, працює з коробки).
  • З'явилася іконка увімкнення/вимкнення сповіщень робочого столу.
  • В офіційному репозиторії є Dropbox (точніше аплет, який автоматом встановлює програму із сайту розробника), Skype, Slack та Telegram.
Джерела: