Как внести изменения в httpd.conf apache, запущенного внутри контейнера DOCKER, и перезапустить apache
Я новичок в докере. В нашей докерной среде - Apache был установлен и запущен.
Теперь мне нужно попасть в контейнер, изменить httpd.conf
, сохранить его, а затем мне нужно перезапустить apache.
Можете ли вы, ребята, сообщить мне, что нужно сделать. Я очень смущен - команды "exec" и "attach".
Ответы
Ответ 1
Нет необходимости присоединяться или exec (что в любом случае является функцией отладки)
Вы можете использовать docker cp
для копирования локальной версии вашего httpd.conf
в контейнер. (Таким образом, вы можете изменить файл с комфортом вашей локальной среды)
docker cp httpd.conf <yourcontainer_name>:/path/to/httpd.conf
Как только это будет сделано, вы можете отправить сигнал USR1, чтобы запросить изящный перезапуск (см. Синтаксис docker kill
):
docker kill --signal="USR1" <yourcontainer_name>
Замените <yourcontainer_name>
идентификатором или именем контейнера, на котором запущен Apache.
Это будет работать только в том случае, если основной процесс, запущенный вашим контейнером,
CMD ["apachectl", "-DFOREGROUND"]
См. Больше в разделе " Докер: как перезапустить службу, запущенную в контейнере Docker "
Ответ 2
Введите контейнер, открыв оболочку bash:
docker exec -it containerName bash
Думаю, вам лучше просто перезагрузить apache config и не перезагружать apache. Но я бы не пошел по этому маршруту и просто изменил Dockerfile и перестроил и повторил изображение.
для ссылки: https://docs.docker.com/engine/reference/commandline/exec/
Ответ 3
Для обновления конфигураций Apache вам необходимо:
-
Замените конфигурационные файлы Apache.
а. Если у вас есть папка конфигурации, отображаемая извне контейнера, вы должны обновлять конфигурации вне контейнера. б. Если ваши конфиги apache хранятся внутри контейнера, вам нужно запустить что-то вроде этого:
docker cp httpd.conf YOUR_CONTAINER_NAME: /path/to/httpd.conf
-
Перезапустить Graceful Apache:
sudo docker exec -it YOUR_CONTAINER_NAME apachectl изящный