Для начала создайте файл Dockerfile в корневой директории вашего проекта. Внутри него укажите базовый образ, например, php:8.2-apache. Это позволит сразу получить готовую среду с установленными Apache и PHP. Добавьте строку COPY . /var/www/html/, чтобы скопировать файлы вашего проекта в контейнер.
Следующий шаг – настройка конфигурации Apache. Создайте файл 000-default.conf и разместите его в папке config вашего проекта. В Dockerfile добавьте команду COPY config/000-default.conf /etc/apache2/sites-available/000-default.conf. Это позволит использовать ваши настройки вместо стандартных.
Для упрощения работы с контейнером создайте файл docker-compose.yml. В нем укажите порты, которые будут использоваться, например, 8080:80. Это позволит обращаться к вашему приложению через localhost:8080. Добавьте также секцию volumes, чтобы синхронизировать изменения в коде без пересборки контейнера.
После настройки выполните команду docker-compose up -d для запуска контейнера. Проверьте работу приложения, открыв браузер и перейдя по адресу http://localhost:8080. Если все настроено правильно, вы увидите ваш проект в действии.
Подготовка окружения для работы с Docker
Установите Docker на вашу операционную систему, следуя официальной документации. Для Linux используйте команду curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh. На Windows и macOS скачайте Docker Desktop с сайта docker.com.
Проверьте корректность установки, выполнив команду docker --version. Убедитесь, что Docker запущен и готов к работе. На Linux добавьте текущего пользователя в группу docker, чтобы избежать необходимости использовать sudo: sudo usermod -aG docker $USER.
Создайте рабочую директорию для вашего проекта. Например, выполните:
mkdir ~/my-docker-project
cd ~/my-docker-project
Подготовьте файл Dockerfile, который будет содержать инструкции для сборки образа. Создайте его в корневой директории проекта:
touch Dockerfile
Установите текстовый редактор, если он еще не установлен. Например, для Linux используйте sudo apt install nano, а для Windows – скачайте Notepad++ или Visual Studio Code.
Настройте переменные окружения, если это необходимо. Создайте файл .env в корневой директории проекта и добавьте туда нужные значения, например:
DB_HOST=localhost
DB_USER=root
DB_PASS=secret
Проверьте доступность портов на вашей машине. Убедитесь, что порты 80 и 443 свободны, так как они часто используются для веб-серверов. Для проверки выполните:
sudo netstat -tuln | grep :80
Теперь ваше окружение готово для работы с Docker. Переходите к созданию и настройке Docker-образа с Apache и PHP.
Установка Docker на вашем компьютере
Для начала скачайте Docker с официального сайта docker.com. Выберите версию, подходящую для вашей операционной системы: Windows, macOS или Linux. Убедитесь, что ваш компьютер соответствует минимальным системным требованиям, указанным на странице загрузки.
После скачивания запустите установочный файл и следуйте инструкциям мастера установки. Для Windows и macOS установка включает Docker Desktop, который предоставляет графический интерфейс для управления контейнерами. На Linux Docker устанавливается через командную строку, используя пакетный менеджер вашего дистрибутива.
На Linux откройте терминал и выполните команду для установки Docker. Например, для Ubuntu используйте:
sudo apt update
sudo apt install docker.io
После завершения установки проверьте, что Docker работает корректно. Введите команду:
docker --version
Если версия Docker отображается, значит, установка прошла успешно. Для проверки работы Docker запустите тестовый контейнер:
docker run hello-world
Если вы видите сообщение о успешном запуске, Docker готов к использованию. Теперь можно приступать к созданию и настройке Docker-образов для ваших проектов.
Создание рабочей директории для проекта
Создайте новую папку для вашего проекта, чтобы организовать файлы и упростить управление. Используйте команду в терминале:
mkdir my-apache-php-project
Перейдите в созданную директорию:
cd my-apache-php-project
Внутри папки создайте структуру файлов и каталогов для проекта. Например:
src/– для исходного кода PHP.public/– для файлов, доступных через веб-сервер.Dockerfile– для описания контейнера.docker-compose.yml– для управления контейнерами.
Пример структуры:
my-apache-php-project/
├── src/
│ └── index.php
├── public/
│ └── .htaccess
├── Dockerfile
└── docker-compose.yml
Поместите в src/index.php простой PHP-код для проверки:
<?php
echo "Hello, Docker!";
?>
Теперь рабочая директория готова для дальнейшей настройки Docker и Apache.
Обзор файловой структуры проекта
Создайте корневую директорию проекта, например apache-php-docker, и внутри неё организуйте файлы и папки следующим образом:
| Файл/Папка | Назначение |
|---|---|
Dockerfile |
Определяет конфигурацию Docker-образа, включая установку Apache, PHP и необходимых зависимостей. |
docker-compose.yml |
Упрощает управление контейнерами, описывая сервисы, сети и тома. |
src/ |
Содержит исходный код вашего PHP-приложения. Разместите здесь файлы index.php и другие скрипты. |
public/ |
Используйте для хранения статических файлов, таких как CSS, JavaScript и изображения. |
config/ |
Хранит конфигурационные файлы Apache, например apache.conf или vhosts.conf. |
logs/ |
Создайте для хранения логов Apache и PHP, чтобы упростить отладку. |
.dockerignore |
Исключает ненужные файлы из сборки Docker-образа, например node_modules/ или vendor/. |
Внутри Dockerfile укажите базовый образ, например php:8.2-apache, и добавьте команды для установки дополнительных модулей PHP, таких как pdo_mysql или gd. В docker-compose.yml настройте порты, тома и переменные окружения для контейнеров.
Поместите PHP-скрипты в src/, а статические файлы – в public/. Это поможет разделить логику приложения и ресурсы, упростив поддержку и масштабирование проекта.
Создание и настройка Docker образа с Apache и PHP
Создайте файл Dockerfile в корне вашего проекта. Укажите базовый образ, например php:8.2-apache, чтобы сразу получить PHP и Apache в одном контейнере. Добавьте строку FROM php:8.2-apache в начало файла.
Установите необходимые расширения PHP с помощью команды RUN docker-php-ext-install. Например, для работы с базой данных добавьте RUN docker-php-ext-install pdo_mysql. Если требуется, включите модули Apache, используя RUN a2enmod rewrite для поддержки ЧПУ.
Скопируйте файлы вашего проекта в контейнер. Используйте команду COPY . /var/www/html/, чтобы перенести содержимое текущей директории в корневую папку Apache. Убедитесь, что файлы имеют правильные права доступа.
Настройте переменные окружения, если это необходимо. Добавьте строку ENV APACHE_DOCUMENT_ROOT /var/www/html/public, чтобы изменить корневую директорию Apache. Это полезно, если ваш проект использует структуру с папкой public.
Соберите образ, выполнив команду docker build -t my-php-app . в терминале. После успешной сборки запустите контейнер с помощью docker run -d -p 80:80 my-php-app. Проверьте работу приложения, перейдя по адресу http://localhost.
Для отладки используйте команду docker exec -it , чтобы войти в контейнер и проверить настройки. Убедитесь, что Apache запущен и PHP работает корректно.
Сохраните Dockerfile в системе контроля версий, чтобы другие разработчики могли использовать его для сборки. Это упрощает развертывание и обеспечивает одинаковую среду для всех участников проекта.
Написание Dockerfile для сборки образа
Создайте файл Dockerfile в корне вашего проекта. Начните с выбора базового образа, например, php:8.2-apache, чтобы сразу получить PHP и Apache. Укажите это в первой строке:
FROM php:8.2-apache
Установите необходимые зависимости для PHP, используя команду RUN. Например, добавьте расширения mysqli и pdo_mysql для работы с базами данных:
RUN docker-php-ext-install mysqli pdo_mysql
Скопируйте файлы вашего проекта в контейнер. Используйте команду COPY, чтобы перенести содержимое текущей директории в папку /var/www/html:
COPY . /var/www/html
Настройте права доступа для файлов, если это необходимо. Например, измените владельца папки /var/www/html на пользователя www-data:
RUN chown -R www-data:www-data /var/www/html
Откройте порт 80 для работы Apache, добавив строку:
EXPOSE 80
Завершите Dockerfile командой CMD, чтобы запустить Apache в фоновом режиме:
CMD ["apache2-foreground"]
Сохраните файл и соберите образ с помощью команды docker build -t my-php-app .. Теперь ваш образ готов к использованию.
Настройка конфигурации Apache для проекта
Создайте файл конфигурации Apache для вашего проекта в директории /etc/apache2/sites-available/. Например, назовите его myproject.conf. В этом файле укажите основные параметры виртуального хоста:
<VirtualHost *:80>
DocumentRoot /var/www/html/myproject
ServerName myproject.local
<Directory /var/www/html/myproject>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Замените /var/www/html/myproject на путь к корневой директории вашего проекта. Убедитесь, что директория существует и содержит файлы проекта. Параметр ServerName задаёт доменное имя, которое будет использоваться для доступа к проекту.
Активируйте конфигурацию с помощью команды:
a2ensite myproject.conf
Перезагрузите Apache для применения изменений:
service apache2 reload
Если вы используете локальную разработку, добавьте доменное имя myproject.local в файл /etc/hosts:
127.0.0.1 myproject.local
Для работы с .htaccess убедитесь, что модуль mod_rewrite включён. Проверьте его статус командой:
a2enmod rewrite
Если вы планируете использовать HTTPS, создайте SSL-сертификат и настройте виртуальный хост для работы на порту 443. Подключите модуль mod_ssl:
a2enmod ssl
Проверьте логи Apache в /var/log/apache2/, чтобы отслеживать ошибки и корректировать конфигурацию при необходимости.
Проверка работы приложений на локальном сервере
После запуска Docker-контейнера с Apache и PHP, убедитесь, что сервер работает корректно. Откройте браузер и перейдите по адресу http://localhost. Если вы видите стандартную страницу Apache, значит сервер запущен успешно.
Для проверки работы PHP создайте файл index.php в корневой директории вашего проекта. Добавьте в него код <?php phpinfo(); ?> и сохраните. Перезагрузите страницу в браузере. Если отображается информация о версии PHP и настройках, PHP работает правильно.
Если вы разрабатываете веб-приложение, разместите его файлы в директории, которая связана с контейнером через Docker-том. Проверьте доступность приложения через браузер, чтобы убедиться, что все страницы и скрипты загружаются без ошибок.
Для отладки ошибок откройте логи контейнера. Используйте команду docker logs <container_id>, чтобы просмотреть сообщения Apache и PHP. Это поможет быстро найти и исправить проблемы, если они возникнут.
Если вы используете базу данных, убедитесь, что приложение корректно подключается к ней. Создайте тестовый скрипт для проверки соединения и выполнения запросов. Проверьте, что данные сохраняются и извлекаются без ошибок.
Регулярно тестируйте приложение на локальном сервере перед развертыванием на продакшн. Это позволит выявить и устранить ошибки на ранних этапах разработки.






