В этой статье я расскажу о преимуществах использования Docker для запуска локальных серверов. Docker — это платформа виртуализации, которая позволяет запускать приложения в изолированных контейнерах. Это означает, что вам не нужно беспокоиться об установке зависимостей или настройке среды выполнения. Давайте на примере узнаем как запустить WordPress под Docker.
Преимущества использования Docker
Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнеризация позволяет упаковать приложение и его зависимости в легко переносимый формат, что обеспечивает согласованную работу приложений в различных средах. Docker Compose — это инструмент для определения и запуска многоконтейнерных приложений с помощью YAML-файлов. В этой статье мы будем использовать именно Docker Compose.
- Изоляция: приложения изолированы друг от друга и от вашей системы. Это обеспечивает более высокую безопасность и стабильность.
- Портативность: контейнеры Docker можно легко переносить между компьютерами. Это упрощает совместную работу и развертывание приложений.
- Простота использования: Docker CLI (командная строка) проста в использовании. Вы можете легко создавать, запускать и останавливать контейнеры.
- Масштабируемость: Docker позволяет легко масштабировать приложения. Вы можете запускать несколько экземпляров приложения в разных контейнерах.
Видео инструкция: как запустить WordPress под Docker
Исходник для работы с данным видео роликом можно получить по ссылке в репозитории GitHub.
У нас получился docker-compose.yml
файл со следующим кодом:
version: '3.9'
services:
mysql:
image: mysql:5.7
restart: always
ports:
- 3306:3306
volumes:
- "./.srv/database:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: my-site
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
image: wordpress:latest
depends_on:
- mysql
links:
- mysql
ports:
- 8000:80
restart: always
environment:
WORDPRES_DB_HOST: mysql:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: my-site
WORDPRESS_DEBUG: 1
volumes:
- ./.srv/wordpress/:/var/www/html
- ./theme/:/var/www/html/wp-content/themes/ale
- ./plugin/:/var/www/html/wp-content/plugins/ale-core
- ./.srv/custom.ini:/usr/local/etc/php/conf.d/custom.ini
phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- mysql
links:
- mysql
ports:
- 8181:80
environment:
MYSQL_USERNAME: wordpress
MYSQL_ROOT_PASSWORD: wordpress
PMA_HOST: mysql
Анализ docker-compose.yml файла
- Версия и сервисы: В начале файла указывается версия Docker Compose (в данном случае ‘3.9’). Затем следует раздел ‘services’, где описываются сервисы, необходимые для приложения.
- Сервис MySQL:
image
: Указывает используемый образ Docker для MySQL (в данном случаеmysql:5.7
).restart
: Указывает, должен ли контейнер перезапускаться в случае ошибки (в данном случаеalways
).ports
: Определяет порты, которые должны быть открыты на хосте для обращения к контейнеру MySQL (в данном случае 3306).volumes
: Указывает пути к хранилищам данных, где MySQL будет хранить данные (в данном случае./.srv/database:/var/lib/mysql
).environment
: Задает переменные среды, необходимые для настройки MySQL (в данном случае установлены пароль для root пользователя и другие параметры для базы данных).
- Сервис WordPress:
image
: Указывает используемый образ Docker для WordPress (в данном случаеwordpress:latest
).depends_on
: Определяет зависимость от других сервисов, в данном случае, от MySQL.links
: Устанавливает связь с другими сервисами.ports
: Определяет порты, через которые WordPress будет доступен на хосте (в данном случае 8000).volumes
: Указывает пути к хранилищам данных и другим ресурсам, необходимым для работы WordPress.environment
: Задает переменные среды для настройки WordPress.
- Сервис phpMyAdmin:
image
: Указывает используемый образ Docker для phpMyAdmin (в данном случаеphpmyadmin/phpmyadmin
).depends_on
: Определяет зависимость от других сервисов, в данном случае, от MySQL.links
: Устанавливает связь с другими сервисами.ports
: Определяет порты, через которые phpMyAdmin будет доступен на хосте (в данном случае 8181).environment
: Задает переменные среды, необходимые для настройки phpMyAdmin.
После анализа каждого блока в docker-compose.yml
файле мы можем понять, какие сервисы запускаются, как они настроены и как они взаимодействуют друг с другом, что позволяет эффективно развертывать и управлять приложением с использованием Docker.
Настройки PHP
Для персонализации и добавлений необходимых настроек сервера PHP можно создать отдельный файл custom.ini
и при помощи volumes помещать его в каталог интерпретатора /usr/local/etc/php/conf.d/custom.ini
file_uploads = On
memory_limit = 1024M
upload_max_filesize = 1024M
post_max_size = 1024M
max_executation_time = 1200
max_input_vars = 2000
Заключение
В заключении, мы обсудили преимущества использования Docker для разворачивания локальных серверов, а также представили видео-инструкцию по запуску WordPress под Docker. Анализируя docker-compose.yml
файл, мы рассмотрели каждый сервис и его настройки, чтобы понять, как они взаимодействуют друг с другом и как это обеспечивает эффективное развертывание приложения. Docker предоставляет изоляцию, портативность, простоту использования и масштабируемость, что делает его превосходным инструментом для разработки и развертывания приложений. После анализа каждого блока в docker-compose.yml
файле мы можем глубоко понять его структуру и параметры, что помогает эффективно управлять приложением с использованием Docker.