Создаем файл docker-compose.yml
Наша сборка будет состоять из 3-ех стандартных сервисов:
- Сервис WordPress. Будет включать в себя сервер и файлы CMS
- Сервис для БД, в нашем случае MySQL
- Ну и так же поставим phpMyAdmin
Службы будут описаны и указаны в файле docker-compose.yml, который сначала необходимо создать в нашем каталоге:
mkdir wordpress-docker
cd wordpress-docker
touch docker-compose.yml
Можем открыть папку в любом удобном редакторе
У нас должен быть пустой файл docker-compose.yml внутри папки wordpress-docker. Открываем файл и прописываем сервис для mysql.
version: '3'
services:
db:
image: mysql:8
container_name: mysql
restart: always
command: "--default-authentication-plugin=mysql_native_password"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wpdb
MYSQL_USER: user
MYSQL_PASSWORD: password
В разделе сервисов мы добавили первое, которое называется db. Этот сервис связан образом mysql и, следовательно, предоставляет необходимый экземпляр базы данных MySQL.
command: "--default-authentication-plugin=mysql_native_password"
Эта команда
Эта команда позволяет нам запустить базу с включенной собственной аутентификацией по паролю.
Кроме того, нам нужно установить следующие переменные среды: MYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_USER и MYSQL_PASSWORD. Можете прописать свои.
Добавляем WordPress сервис
Добавляем соотвествующий кусок кода описывающий сервис
wordpress:
image: wordpress
container_name: wordpress
restart: always
volumes:
- ./:/var/www/html/
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wpdb
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: password
ports:
- 8080:80
- 443:443
Здесь мы используем образ wordpress. Вы можете указать любую версию вида wordpress:4.9.8. Я буду использовать последнюю актуальную.
Свойство volumes используется для подключения каталога /var/www/html контейнера к локальной папке приложения. Все изменения, которые мы будем вносит в файлы папки нашего приложения буду отображать сразу в контейнере.
Кроме этого, мы снова используем раздел environment для установки значений для четырех переменных: WORDPRESS_DB_HOST, WORDPRESS_DB_NAME, WORDPRESS_DB_USER и WORDPRESS_DB_PASSWORD.
Значение, присвоенное WORDPRESS_DB_HOST, должно быть идентификатором сервиса базы данных ( в нашем случае db).
И мы обязательно сопоставим внутренний порт 80 с внешним портом 8080, чтобы WordPress был доступен через http://localhost:8080.
Добавляем phpMyAdmin
Вставляем код
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
ports:
- 3333:80
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORT: password
Здесь мы используем образ phpmyadmin/phpmyadmin (https://hub.docker.com/r/phpmyadmin/phpmyadmin).
Включаем доступ к базе данных для phpMyAdmin. Устанавливаем две переменные среды для этой службы:
PMA_HOST: необходимо указать имя службы базы данных (в нашем случае db)
MYSQL_ROOT_PASSWORD: необходимо установить пароль root MySQL (в нашем случае это просто password)
Внутренний порт 80 (на котором по умолчанию доступен phpMyAdmin) сопоставлен с внешним портом 3333, чтобы мы могли получить доступ к веб-интерфейсу пользователя phpMyAdmin с помощью URL http://localhost:3333 позже.
Итоговый файл docker-compose.yml
Это полная версия получившегося файла:
version: '3'
services:
db:
image: mysql:8
container_name: mysql
restart: always
command: "--default-authentication-plugin=mysql_native_password"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wpdb
MYSQL_USER: user
MYSQL_PASSWORD: password
wordpress:
image: wordpress:4.9.8
container_name: wordpress
restart: always
volumes:
- ./:/var/www/html/
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wpdb
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: password
ports:
- 8080:80
- 443:443
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
ports:
- 3333:80
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORT: password
В целом все. Нам остается только запустить установщик наших сервисов:
docker-compose up
Заходим на наш http://localhost:8080 и получаем стартовую страницу установки:
Отлично все получилось.