Через неделю мне удалось заставить его работать, но по-другому. Я перестал возиться с хозяином и начал изучать, как Docker может спасти мою жизнь.
Этот пост дал мне ключ:
Docker - Запустите Apache на хосте и контейнере для разных сайтов.
Мое начальное чтение о докере было таким: PHP Web Development с Docker
Подводя итог, мне не нужно устанавливать apache2.2 и PHP5.3 на моем хост-сервере, у меня может быть изолированный контейнер, в который я могу установить все, что мне нужно (обычно один сервис), и забыть о возможных несовместимостях с версией хост-ОС. Докер управляет всем этим. Таким образом, я могу иметь один контейнер с apache 2.2 + PHP 5.3, как это было бы в операционной системе Debian Squeeze. Другой контейнер с apache 2.2 + PHP 5.4, как это было бы в Wheezy, другой с apache 2.4 + PHP7.0 как в растяжке и так далее. Все работают одновременно и обслуживают разные домены. Чтобы добиться последнего, сделайте на хосте apache / nginx, чтобы он работал в качестве обратного прокси-сервера, перенаправляя каждый домен в отдельный контейнер apache-php благодаря сопоставлению портов докера. Вам даже не нужно иметь apache / nginx на хосте, он также может быть в контейнере.
Способ докера состоит в том, чтобы каждая (микро) служба была в контейнере, чтобы вы могли иметь mariaDB в другом контейнере и т. Д.
Мои шаги (кратко): ( Я не могу публиковать больше, чем ссылки, когда я наберу достаточно репутации, я буду редактировать и добавлять их )
0 - Узнайте о докере (чем больше, тем лучше): как создавать образы с помощью Dockerfile , лучшие практики , работа в сети в Docker, ...
1 - Установите Docker: всегда следуйте официальному руководству .
2 - Создайте каталог с вашим будущим именем образа (например, / home / user / docker / images / apache22php53), внутри создайте ваш Dockerfile и конфиги (в данном случае - virtualhost conf), мой Dockerfile был:
FROM debian:squeeze
LABEL maintainer="raguchi@gmail.com"
# squeeze new mirrors
RUN echo "deb http://archive.debian.org/debian/ squeeze contrib main non-free" > /etc/apt/sources.list
RUN apt-get update
# Common packages
RUN apt-get update && \
apt-get install -y --force-yes curl wget
RUN apt-get update && \
apt-get install -y --force-yes \
apache2 \
libapache2-mod-php5 \
ntp \
php5 \
php5-curl \
php5-gd \
php5-ldap \
php5-mcrypt \
php5-mysql \
vim
RUN a2enmod \
php5 \
rewrite \
ssl
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
# RUN chown -R www-data:www-data /var/www
COPY conf/apache/virtualhosts /etc/apache2/sites-enabled
# disable default virtualhost
RUN a2dissite 000-default
EXPOSE 80
EXPOSE 443
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
В директории поместите файл conf вашего виртуального хоста в путь: conf / apache / virtualhosts /
3 - построить изображение с помощью (предыдущий компакт-диск внутри директории):
sudo docker build -t apache22php53 .
4 - запустить контейнер с:
sudo docker run -ti -d -p 2253:80 -v /var/www/html:/var/www --name apache22php53 apache22php53 /bin/bash
Docker отобразит (-p) хост-порт 2253 на 80 контейнерный порт. Мы монтируем (-v) также наш корневой каталог хоста (/ var / www / html) в корневой каталог документа apache-контейнера (в squeeze это / var / www). Устанавливаются также имя контейнера (--name).
5 - SSH в контейнер с:
sudo docker exec -ti apache22php53 /bin/bash
и при необходимости запустите apache (как в моем случае). "выход", чтобы вернуться к хозяину кли.
6 - перейдите к ... yourvhostdomain.com:2253, и вы должны увидеть, что ваш apache работает с загруженным PHP5.3.
Это основы. После этого вы узнаете, как монтировать данные хоста (www, базы данных и т. Д.) Внутри контейнеров, как контейнеры могут взаимодействовать между ними и с хостом (приватные IP-адреса в сети Docker), как использовать docker-compose для настройки нескольких контейнеров. сразу (веб, база данных и т. д.), обратный прокси-сервер для нескольких контейнерных веб-серверов и т. д.