Докерізація стека lemp під ubuntu c допомогою compose

Docker-Compose - це інструмент командного рядка для визначення і для управління декількома мульти-контейнерами додатків Docker. Фактично, Compose є скриптом на мові Python, може бути легко встановлений за допомогою команди pip (це команда для установки програмного забезпечення Python зі сховищ пакетів Python). Завдяки Compose можна запускати кілька Docker-контейнерів за допомогою однієї команди. Це дозволить в створити контейнер як службу, що прекрасно підходить як для розробки і тестування, так і для реальних завдань.

Розберемося, як використовувати Docker-Compose для створення стека LEMP. Прийнято вважати, що LEMP - це Linux + Nginx + MySQL + PHP. Кожен компонент буде запущений у власному контейнері Docker.

  • контейнер Nginx,
  • PHP-контейнер,
  • phpMYADMIN контейнер
  • контейнер MySQL / MariaDB.
  • Ubuntu сервер 16.04-64 bit
  • Root привілеї

Крок 1 - Встановити Docker

На цьому етапі треба встановити Docker. Docker доступний в репозиторії Ubuntu, але колись потрібно оновити стан:

Встановіть останню версію Docker зі сховищ Ubuntu.

Запустіть Докер і включіть його в автозавантаження:

Тепер служба Docker запущена. Далі, ви можете спробувати запустити Докер за допомогою тестової команди:

В результаті виконання буде видно вітання Docker в консолі

Крок 2 - Встановіть Docker-Compose

На першому етапі було встановлено Docker. Тепер слід встановити Docker-Compose. Нам необхідний python-pip для установки compose, тому слід встановити python і python-pip за допомогою apt:

Коли все буде встановлено, встановіть Docker-Compose таким чином:

Тепер перевіримо версію Docker-Compose:

Якщо Docker-Compose встановлений, в консолі буде видно звіт про номер версії.

Крок 3 - Створення та налагодження середовища Docker

На цьому етапі потрібно буде налаштувати середу Docker-Compose. Для цього ми використовуємо нового користувача (НЕ root), тому потрібно створити такого користувача. Додамо нового користувача з ім'ям «robocop» (краще вибрати власне ім'я користувача):

Далі додайте нового користувача в групу «Docker» і перезапустіть Докер.

Тепер користувач «robocop» може використовувати Docker без sudo. Далі з-під супер-користувача увійдемо в «robocop» через su:

Створіть новий каталог для створення середовища Compose.

Це середовище Docker-Compose, всі файли, які будуть перебувати в контейнері Docker, повинні розташовуватися в цьому каталозі. Коли ми використовуємо Docker-Compose, нам потрібен файл .yml з ім'ям "Docker-Compose.yml". В папці 'lemp-compose', створіть нові каталоги і файл "Docker -Compose.yml":

  • logs: Каталог журналів Nginx
  • Nginx: містить конфігураційні файли Nginx, наприклад файли віртуальних хостів і т.д.
  • public: каталог для веб-файлів, index.html і PHP
  • DB-data: каталог бази даних.

Створюємо файли журналів error.log і access.log в каталозі «журналів»

Створюємо новий файл конфігурації, який буде конфігурацією віртуального хоста nginx в папці «nginx»:

Використовуємо наступні настройки:

Збережіть файл. Створіть новий файл index.html і PHP-файл в папці «public».

Тепер можна подивитися структуру каталогу за допомогою команди:

Крок 4 - Налаштування файлу doker-compose.yml

У попередньому етапі ми створили каталоги і файли, необхідні для наших контейнерів. На цьому етапі потрібно відредагувати файл «doker-compose.yml». У файлі «doker-compose.yml» слід визначити служби для стека LEMP, базові образи для кожного контейнера, а також томи docker.

Заходимо з-під користувача "robocop» і правимо файл «doker-compose.yml»:

Визначимо службу Nginx, для чого вставляємо цю конфігурацію:

У цій конфігурації ми вже визначили:

  • nginx: ім'я служби
  • image: використовуємо «bitnami / nginx»
  • ports: відкрили контейнерний порт 80 на порт хоста 80
  • links: пов'язали контейнер «nginx» і контейнер «phpfpm»
  • volumes: монтіруеv місцеві каталоги для контейнера (журнал, конфігурацію віртуального і кореневої веб-каталог)

Визначимо службу PHP-fpm. Вставимо настройки нижче блоку Nginx:

Тут ми задаємо:

  • phpfpm: визначили ім'я служби
  • image: визначили базовий образ для служби phpfpm з образом «bitnami / phpfpm»
  • ports: Запустимо PHP-fpm на TCP-порту 9000 і ПроКіно його на порт 9000 хоста.
  • volumes: монтуємо кореневу папку «public» до папки «myapps» в контейнері.

Визначення служби MySQL

У третьому блоці слід вставити конфігурацію для контейнера СУБД MariaDB:

В даному випадку ми задаємо:

  • MySQL: як ім'я служби
  • image: контейнер заснований на образі «mariadb»
  • ports: контейнер служби використовує порт 3306 для підключення MySQL, прокидаємо його на порт 3306 хоста.
  • volumes: db-data
  • environment: Необхідно визначити змінну середовища «MYSQL_ROOT_PASSWORD», задавши пароль root

-Налаштування служб PHPMyAdmin

Для останнього блоку вставте конфігурацію нижче:

Ми використовуємо Docker-образ «phpmyadmin», зіставляємо порт контейнера 80 і порт 8080 на хості, пов'язуємо контейнер з контейнером mariadb, встановлюємо перезавантаження в always, визначаємо деякі змінні середовища, включаючи «PMA_HOST».

Крок 5 - Запуск doker-compose

Тепер ми готові запустити doker-compose.

Зверніть увагу, що для запуску doker-compose, ви повинні будете перебувати в директорії проекту doker-compose і виразно мати файл YML з конфігурацією.

Виконайте команду нижче, щоб запустити стек LEMP:

Ключ -d дозволяє виконати запуск в фоновому режимі.

Нові контейнери створені, що можна перевірити їх за допомогою наступної команди:

Ми повинні побачити, що створені чотири контейнери з Nginx, PHP-FPM, MariaDB і PHPMyAdmin.

Крок 6 - тестування

Перевірка портів, які використовуються docker-proxy на хості

Далі ми можемо побачити, що порт 80 задіяний для контейнера Nginx, порт 3306 для контейнера MariaDB, порт 9000 для PHP-FPM, і порт 8080 для контейнера PhpMyAdmin. Звернення до порту 80 з веб-браузера дозволить побачити кореневий файл index.html.

Переконайтеся, що PHP-FPM працює, звернувшись до сторінці /info.php на Вашому сервері.

З командного рядка можна отримати доступ до контейнера MySQL.

Можна создайть нову базу даних:

Контейнер MariaDB живий, і ми створили нову базу даних 'robocop_db'.

Далі, для доступу до PHPMyAdmin звернемося до порту 8080 в браузері.

Відкриється сторінка для входу в phpMyAdmin, можна буде увійти як root, з паролем "robocop 123". Ви будете автоматично підключені до контейнера mysql, який був визначений у змінній PMA_HOST.

Готово! LEMP-stack працює під управлінням docker-Compose, що складається з чотирьох контейнерів.

Схожі статті