Как внести изменения в 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 вам необходимо:

  1. Замените конфигурационные файлы Apache.

    а. Если у вас есть папка конфигурации, отображаемая извне контейнера, вы должны обновлять конфигурации вне контейнера. б. Если ваши конфиги apache хранятся внутри контейнера, вам нужно запустить что-то вроде этого:

    docker cp httpd.conf YOUR_CONTAINER_NAME: /path/to/httpd.conf

  2. Перезапустить Graceful Apache:

    sudo docker exec -it YOUR_CONTAINER_NAME apachectl изящный