LINUX.ORG.RU

Как настроить автостарт apache в контейнере Docker?

 


1

1

По порядку.
1. На базе образа Debian9 из репозитория Docker создал образ Debian9 + lamp.
2. Пробросил на роутере порт 61550->61550.
3. Запустил контейнер на базе этого образа:

docker run -itd --restart=always -p 61550:80 debian9 /bin/bash
4. Вошел в контейнер:
docker attach de0
5. Указал апачу слушать 61550-й порт:
nano /etc/apache2/ports.conf->Listen 61550
/etc/init.d/apache2 restart
6. Набираю в браузере http://my_site:61550 и вижу работающий сайт.
7. Делаю рестарт сервера, захожу по этому же адресу, и: «Попытка соединения не удалась».
8. Снова вхожу в контейнер:
docker attach de0
9.
/etc/init.d/apache2 restart
10. Сайт работает.
Т.е., после старта контейнера не запускается апач.

Что пробовал:
а) запускать контейнер таким образом:
docker run -it --restart=always -p 61550:80 debian9 /etc/init.d/apache2 start
б) собирал образ через Dockerfile, где последней строкой ставил
CMD /etc/init.d/apache2 start
Все-равно, при старте контейнера апач не стартует.
Может кто-то уделить своё драгоценное время решению данной проблемы?

Ты не рестартуешь контейнер, ты его пересоздаешь. Такова логика докера. Либо возьми официальный образ апача, либо сделай нормальный dockerfile (сам гугли, он оче просто делается)

Dred ★★★★★ ()
Последнее исправление: Dred (всего исправлений: 1)
Ответ на: комментарий от Dred

После рестарта сервера контейнер благодаря директиве --restart=always запускается и имеет тот же id, что и перед рестартом.

amazon4ik ()

А кто запустит систему инициализации в контейнере? Пушкин? В докере обычно запускают сами приложения, в foreground режиме, с апатчем наверное будет что-то вроде этого:

docker run -d --restart=always --name apache-server -p 61550:80 debian9 /usr/sbin/apache2 -DFOREGROUND 
Если нужно поправить что-то в контейнере, то
docker exec -i -t apache-server /bin/bash

Aber ★★★★ ()
Ответ на: комментарий от amazon4ik

Мой хрустальный шар подсказывает, что возможно сработает

docker run -d --restart=always --name apache-server -p 61550:80 debian9 /usr/sbin/apache2ctl -D FOREGROUND
Если нет, то значит звезды не сошлись :)

Aber ★★★★ ()
Ответ на: комментарий от Aber

Великое тебе респектище, добрый человек! :) Все отлично работает!

amazon4ik ()
Ответ на: комментарий от Aber

Теперь такая же проблема со стартом mysql.
По аналогии не работает.

amazon4ik ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.