Docker с Apache и php 5.3

В продолжение темы развертывания окружения с php 5.3 соорудил вариант на docker. Прошу любить и жаловать – проект docker-grandpa-php. Этот вариант более легковесный, чем вариант с vagrant. Для работы требуются установленные docker и docker-compose.

Шаги по развертыванию:

  • Клонировать репозиторий в удобную директорию
  • Изменить опцию MAIN_WEB_ROOT_PATH и другие опции в файле .env
  • Добавить конфигурацию Ваших виртуальных хостов Apache в директорию main/sites
  • Добавить Ваши локальные домены в /etc/hosts

Опция MAIN_WEB_ROOT_PATH должна содержать путь к директории, которая будет смонтирована в папку /var/www образа main.

Затем можно запускать командой:

docker-compose up -d main mysql

или

docker-compose up -d main mariadb

После чего Ваши сайты должны открываться как обычно в браузере.

Образ main основан на Ubuntu 12.04 (LTS) и содержит Apache, php 5.3, различные расширения php (в том числе xdebug) и memcached.

Директория share монтируется к /root/share образа main.

MySQL и mariadb вынесены в отдельные образы, как это принято в docker. Для соединения с ними из контейнера main к ним нужно подключаться по их именам – mysql и mariadb. Эти имена в качестве хостов надо прописывать в веб-приложениях.

Полезные команды:

Открыть bash-терминал в главном контейнере:

docker-compose exec main bash

Отобразить список контейнеров сборки и их статусы:

docker-compose ps

Остановить все контейнеры текущей сборки:

docker-compose stop

2 комментария

  1. Игорь, благодарю вас за статью и за репозиторий! Один из немногих, работающих практически из коробки!

    Внесу лепту:
    В файле php53.conf.example у вас используется тег IfVersion, а модуль version не включается в Dockerfile

    Из-за этого контейнер не стартует.
    Исправление:
    Добавить в main/Dockerfile строчку
    RUN a2enmod version
    после RUN a2enmod rewrite.

    С pull request на гитхабе не разбирался, а то бы закоммитил =)

Добавить комментарий для Игорь Тельменко Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *