Личный облачный сервер — часть 4 (разворачиваем проект на WordPress, сначала локально)

В предыдущих частях этого цикла статей по настройке личного облачного сервера мы установили Docker, GitLab, произвели их первоначальную настройку, добились отправки почты через MailGun. Теперь давайте завернём первый публичный проект — простой сайт на WordPress.

Создаём проект в GitLab

1. Нажмите на кнопку Create a project в GitLab на главной странице сразу после аутентификации.

2. Введите имя проекта Project name и отредактируйте, если нужно, Project slug. В конце нажмите Create project.

3. Скопируйте выделенную ниже строку со страницы только что созданного проекта и выполните её в консоли вашей локальной машины в той папке, где вы хотите создать локальную копию проекта (мы считаем, что git на вашей локальной машине установлен и настроен. Если же нет, установите его, найдя инструкцию для вашей операционной системы и также предварительно выполните из консоли инструкции, указанные в пункте Git global setup на скриншоте ниже).

4. Введите имя пользователя (не email) и пароль. Скриншот ниже приведён для варианта с Windows. В Linux логин/пароль будут запрошены прямо в консоли.

5. Git клонирует проект, создав новую папку wordpress-blog со скрытой папкой .git в ней.

6. Создадим и отредактируем файл docker-compose.yml

version: '3.3'

services:
  db:
    image: mysql
    volumes:
      - /var/lib/mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    command: '--default-authentication-plugin=mysql_native_password'

  wordpress:
    image: wordpress
    depends_on:
      - db
    restart: unless-stopped
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
    ports:
      - 80:80

Docker-compose позволяет быстро конфигурировать и запускать мульти-компонентные приложения. В данном случае наше приложение состоит из двух компонент:

  • Mysql базы данных, которой мы присваиваем имя db
  • Самого приложения WordPress с именем wordpress

Разберем каждый из разделов конфигурации чуть подробнее.

  • db — имя сервиса
    • image: mysql — базовый образ на Dockerhub, для создания приложения.
    • volumes — определяет путь к persistent данным на диске (которые должны сохраняться даже при пересоздании контейнера с приложением), в данном случае — путь к файлам с базой данных MySQL.
    • restart: unless-stopped — docker будет автоматически запускать сервис, если только он не был остановлен вручную.
    • environment — переменные операционной системы контейнера. С помощью них происходит инициализация контейнера с определенными специфическими данными. Перечень переменных определяется реализацией docker-образа, тем, какие переменные в качестве параметров он умеет принимать. В данном конкретном случае мы указываем, какое имя пользователя, базу данных и пароль использовать вместо значений по умолчанию. Передав те же самые значения уже в контейнер WordPress, мы дадим ему возможность подключиться к этой БД.
    • command — передаём дополнительный параметр запуска службы MySQL, чтобы WordPress смог подключиться к ней использованием native password, т.к. способ подключения по умолчанию у MySQL начиная с версии 8.0 стал другим.
  • wordpress — имя сервиса для самого приложения
    • image: wordpress — другой базовый образ на Dockerhub.
    • depends_on — указываем, что данный сервис зависит от сервиса mysql, который должен быть запущен первым.
    • restart: unless-stopped — аналогично предыдущему сервису
    • environment — данные для подключения к базе: имя_сервиса_mysql:номер_порта и имя пользователя и пароль для подключения.
    • ports — порт 80 приложения должен транслироваться наружу контейнера в порт с таким же номером для клиентских подключений.

7. Запустите WordPress на локальной машине с помощью команды docker-compose up -d

8. Откройте браузер и введите 127.0.0.1 в качестве адреса сайта. Вы увидите стандартный интерфейс настройки приложения при первом запуске.

В следующей статье мы запустим это приложение уже на удалённом сервере.

Оставьте комментарий