Введение
В развивающейся среде веб-разработки использование возможностей контейнеризации через Docker стало переломным моментом, особенно при развертывании сложных сред, таких как стек LAMP (Linux, Apache, MySQL, PHP). Цель этого руководства — провести вас через простой процесс настройки стека LAMP с помощью Docker-Compose, но с добавлением: мы включим шаг по настройке вашей среды PHP для включения дополнительных модулей и Composer, менеджера зависимостей PHP.
Предварительные условия
Прежде чем мы углубимся в процесс установки, убедитесь, что в вашей системе установлено следующее:
- Docker: платформа для разработки, доставки и запуска контейнерных приложений.
- Docker-Compose — инструмент для определения и запуска многоконтейнерных приложений Docker.
Вы можете проверить установку этих инструментов, запустив docker -v
и docker-compose -v
в своем терминале. Если вы еще не установили их, посетите официальный сайт Docker для получения инструкций по установке.
Шаг 1. Создайте файл Docker-Compose.
Начните с создания файла docker-compose.yml в каталоге вашего проекта. Этот файл имеет решающее значение, поскольку он управляет конфигурацией вашего стека LAMP, определяя, как должен создаваться и взаимодействовать каждый сервис.
version: '3'
services:
web:
build:.
container_name: apache-php
ports:
- "80:80"
volumes:
-./www:/var/www/html
db:
image: mysql:8
container_name: mysql-server
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: secure_password
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
В этой настройке подробно описаны две основные службы: web для Apache и PHP и db для MySQL. Обратите внимание на build:.
директива в разделе web, которая указывает, что Docker должен использовать Dockerfile в текущем каталоге для создания этой службы.
Шаг 2. Настройте PHP с помощью файла Dockerfile.
Чтобы встроить дополнительные модули PHP и Composer, создайте файл Dockerfile в том же каталоге, что и ваш docker-compose.yml. Этот Dockerfile проинструктирует Docker о том, как подготовить вашу собственную среду PHP.
FROM php:8.3-apache
# Install additional PHP modules
RUN docker-php-ext-install pdo_mysql mysqli
# Install Composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
php -r "unlink('composer-setup.php');"
# Enable Apache mod_rewrite
RUN a2enmod rewrite
Этот файл Dockerfile расширяет образ php:8.3-apache, добавляя расширения pdo_mysql и mysqli для взаимодействия с базой данных и глобальную установку Composer.
Шаг 3. Создайте и запустите контейнеры
Когда файл docker-compose.yml готов, вы можете запустить стек LAMP. Откройте терминал, перейдите в каталог вашего проекта, где находится файл docker-compose.yml, и выполните следующую команду:
docker-compose up -d
Флаг -d
запускает ваши контейнеры в автономном режиме, освобождая ваш терминал. Docker-Compose извлечет необходимые образы из Docker Hub, создаст определенные службы и настроит сеть и тома, как указано.
Шаг 4. Доступ к стеку LAMP
Как только ваши контейнеры будут запущены и заработают, вы сможете получить доступ к своему серверу Apache, посетив http://localhost в своем веб-браузере. Вы должны увидеть страницу Apache по умолчанию или содержимое вашего каталога ./www, если вы добавили файлы HTML или PHP.
Чтобы взаимодействовать с вашей базой данных MySQL, вы можете использовать следующую команду для доступа к MySQL CLI:
docker-compose exec db mysql -uroot -proot
При необходимости замените root паролем, который вы определили в файле docker-compose.yml
.
Шаг 5. Управление стеком LAMP
Docker-Compose позволяет легко останавливать, запускать и перестраивать службы. При необходимости используйте следующие команды:
- Чтобы остановить ваши контейнеры:
docker-compose down
- Чтобы снова запустить контейнеры:
docker-compose up -d
- Чтобы перестроить сервисы после внесения изменений:
docker-compose up -d --build
Заключение
Развертывание стека LAMP с помощью Docker и Docker-Compose не только упрощает процесс установки, но и обеспечивает согласованность в различных средах разработки, тестирования и производства. Следуя этому пошаговому руководству, вы научились определять свои службы в файле docker-compose.yml, запускать контейнеры и легко управлять стеком LAMP. Благодаря этим навыкам вы теперь можете быстро и эффективно развертывать веб-приложения, используя возможности контейнеризации.