Пост

Поднимаем web-сервер с Wordpress в Docker для разработки

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

Иногда для тестирования плагинов, тем, доработки функционала требует чистый Wordpress. В данной статье я продемонстрирую, каким оразом я разворачиваю рабочее окружение с готовым Web-сервером (Nginx + PHP-FPM + MariaDB) и установленным финальным релизом Wordpress.

Требования

Для работы нам понадобится:

  • Программа для виртуализации VirtualBox
  • Образ CentOS 8.2 (7.2 Gb)
  • Хостинг, на который мы загрузим наш kickstart-файл, для быстрой установки предварительно настроенной ОС

Подготовка виртуальной машины

Запускаем VirtualBox и создаем новую виртуальную машину:

  • Имя: wordpress
  • Тип: Linux
  • Версия: Red Hat (64-bit)
  • Объем памяти: 4096 Mb
  • Жесткий диск: создать новый
  • Тип жесткого диска: VDI
  • Формат: Динамический
  • Размер: 20 Gb

Создать

Имя и тип ОС

Объем памяти

Жесткий диск

Тип диска

Размер диска

Формат хранения

Добавляем скаченный образ в библиотеку VirtualBox, что бы загрузиться с него

Менеджер виртуальных носителей

Добавить оптический диск

Установка CentOS 8

Centos 8 я устанавливаю из kickstart файла, загруженного на сервер заранее. В этом файле у меня уже прописан: пользователь, пароль, сертификат, список предустановленного ПО

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#
# vmlinuz initrd=initrd.img inst.ks=http://<your-server>/ks-centos8.cfg
#
# version=RHEL8
# System authorization information
auth --enableshadow --passalgo=sha512
# Install OS instead of upgrade
install
# Reboot after installation
reboot --eject
# License agreement
eula --agreed
# Use CDROM installation media
cdrom
# Use text install
text
# Keyboard layouts
keyboard --vckeymap=ru --xlayouts='us','ru' --switch='grp:alt_shift_toggle'
# System language
lang en_US.UTF-8 --addsupport=ru_RU.UTF-8

# Network information
# dhcp
#network  --bootproto=dhcp --device=link --ipv6=auto --activate
# static NAT
network --bootproto=static --device=link --gateway=10.0.2.2 --ip=10.0.2.15 --nameserver=8.8.8.8,8.8.4.4 --netmask=255.255.255.0 --ipv6=auto --activate
# static brige
#network --bootproto=static --device=link --gateway=192.168.11.1 --ip=192.168.11.200 --nameserver=192.168.11.1 --netmask=255.255.255.0 --ipv6=auto --activate
network --hostname=localhost.localdomain

# Root password
rootpw --iscrypted $6$lZma0ZiWGD0yY4hW$.T/sRzouE5X.fghfghfghfghfgh/ODmBV7U1PvbcWmWM/7h6oZqkp.6eRDdy3x.YICI441BWk5QfVYDav7Z/
# Add user
user --groups=wheel --name=admin --iscrypted --password=$6$R9QSOFvUWKc816UF$cyXMFXtCSat1zPsqa806/dfgdfgdfgdfgTwVj1hV8nlFEXK2HrVg2C3kLTw38xPoGcy5193lhGxS7aJT/

# Add ssh user key
sshkey --username=root "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCiz11YRaT3/C7QUVOJdfgdfgdfgdfgdfgdffg9k/+e94dYb ed25519-root"
sshkey --username=admin "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGv4Pt+Ocj3WEdfgdfgdfgdfgdfgdfgddffgdgdfgdfgdiEe ed25519-admin"

# Disable the Setup Agent on first boot
firstboot --disable
# Do not configure the X Window System
skipx
# System services
#services --disabled="chronyd"
# System timezone
timezone Europe/Moscow --isUtc --nontp

# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
zerombr
clearpart --all --initlabel --drives=sda
#clearpart --all --initlabel --drives=sda,sdb
# Disk partitioning information
part /boot --fstype="xfs" --ondisk=sda --size=512
part pv.1874 --fstype="lvmpv" --ondisk=sda --size=1 --grow
#part pv.7906 --fstype="lvmpv" --ondisk=sdb --size=1 --grow
volgroup centos --pesize=4096 pv.1874
#volgroup vg_docker --pesize=4096 pv.7906
logvol swap  --fstype="swap" --size=512 --name=swap --vgname=centos
#logvol /var  --fstype="xfs" --size=1024 --grow --name=var --vgname=centos
logvol /  --fstype="xfs" --size=1024 --grow --name=root --vgname=centos
#logvol /var/lib/docker  --fstype="xfs" --size=1024 --grow --name=lv_docker --vgname=vg_docker

%packages
@^minimal-environment
kexec-tools

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

%post
echo "admin ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/admin
dnf -y update
dnf -y install epel-release
dnf -y install wget tar zip unzip bzip2 traceroute net-tools nano bind-utils telnet htop atop iftop lsof git rsync policycoreutils-python-utils
%end

В этом файле надо поменять хэш паролей пользователей root и admin (заранее сгенерировав их), а так же поменять публичную часть сертификатов пользователей

Запускаем созданную виртуальную машину, и в окне выбора загрузочного диска выбирает присоединенный образ

Запустить

Выбрать загрузочный диск

В момент загрузки (когда появится меню загрузочного диска) надо нажать ESC или Tab и ввести:

1
vmlinuz initrd=initrd.img inst.ks=http://<your-server>/ks-centos8.cfg

Нажать ESC или Tab

Ввести команду

В процессе того, как устанавливается ОС, жмем правой кнопкой мыши на иконку настройки сети и настраиваем её

  • Тип подключения: NAT
  • Дополнительно: Проброс портов

Настроить сеть

Проброс портов

Установка Docker и Docker Compose

После установки и загрузки ОС, запускаем Putty или Kitty, подключаемся к localhost:22 и вводим команды по очереди. Команды вводим без знака доллар

1
2
3
4
5
6
$ sudo dnf -y install -y yum-utils device-mapper-persistent-data lvm2
$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
$ sudo dnf -y install docker-ce --nobest
$ sudo usermod -aG docker $(whoami)
$ newgrp docker
$ sudo systemctl enable --now docker
1
2
3
4
5
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ sudo firewall-cmd --zone=public --add-masquerade --permanent
$ sudo firewall-cmd --reload

Установка Web-сервера и Wordpress в Docker

Ну и финальный шаг, клонируем репозиторий, устанавливаем Docker / Docker Compose и запускаем Web-сервер

1
2
3
$ git clone https://github.com/bullvinkl/wordpress-nginx-docker.git
$ cd wordpress-nginx-docker
$ docker-compose up -d

Запускаем браузер, переходим по адресу: locahost

Видео для наглядности: Youtube

Авторский пост защищен лицензией CC BY 4.0 .

© IT Draft. Некоторые права защищены.