Поднимаем 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
В процессе того, как устанавливается ОС, жмем правой кнопкой мыши на иконку настройки сети и настраиваем её
- Тип подключения: 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