Как внести изменения в httpd.conf apache работает внутри контейнера DOCKER и перезапускает apache

Я новичок в docker. В нашей среде docker - Apache был установлен, и он запущен и работает.
Теперь мне нужно попасть в контейнер, изменить httpd.conf, сохраните его, а затем мне нужно перезапустить apache.

Ребята, пожалуйста, дайте мне знать, что нужно сделать. Я очень сильно запутался - команды "exec" и "attach".

3 ответов


Не нужно прикреплять или 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> контейнером ID или имя запущен Apache.

это будет работать только если основной процесс запущен ваш контейнер

CMD ["apachectl", "-DFOREGROUND"]

на "Docker: как перезапустить службу, запущенную в контейнере Docker"


введите контейнер, открыв оболочку bash:

docker exec -it containerName bash

Я думаю, вам лучше просто перезагрузить Apache config и не перезагружать apache. Но я бы не пошел по этому маршруту и просто изменил Dockerfile и перестроил и перезапустил изображение.

изменить ссылку:https://docs.docker.com/engine/reference/commandline/exec/


для обновления конфигураций Apache вам необходимо:

  1. заменить конфигурации Apache.

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

    настройки СР файл httpd.conf YOUR_CONTAINER_NAME:/path/to / httpd.conf

  2. Do Изящный Apache перезапустить:

    sudo docker exec-это YOUR_CONTAINER_NAME apachectl изящный