web-dev-qa-db-fra.com

Comment apporter des modifications à httpd.conf d'Apache s'exécutant dans le conteneur DOCKER et redémarrer Apache

Je suis nouveau au docker. Dans notre environnement de menu fixe, Apache a été installé et il est opérationnel.
Maintenant, je dois entrer dans le conteneur, modifier le httpd.conf, le sauvegarder puis relancer Apache.

Pouvez-vous me dire, s'il vous plaît, ce qu'il faut faire ... Je suis assez confus au sujet des commandes - "Exec" et "attach".

13
Sunag Sunagms

Pas besoin d'attacher ou d'exécuter (ce qui est vraiment une fonctionnalité de débogage de toute façon)

Vous pouvez utiliser docker cp pour copier une version locale de votre httpd.conf dans le conteneur. (De cette façon, vous pourrez modifier le fichier dans le confort de votre environnement local)

docker cp httpd.conf <yourcontainer_name>:/path/to/httpd.conf

Une fois que cela est fait, vous pouvez envoyer un signal USR1 pour demander un redémarrage en douceur (voir docker kill syntaxe):

docker kill --signal="USR1" <yourcontainer_name>

Remplacez <yourcontainer_name> par l'ID ou le nom du conteneur qui exécute Apache.

Cela ne fonctionnera que si le processus principal lancé par votre conteneur est 

CMD ["apachectl", "-DFOREGROUND"]

Voir plus à " Docker: Comment redémarrer un service exécuté dans Docker Container "

16
VonC

Entrez un conteneur en ouvrant un shell bash:

docker exec -it containerName bash

Je suppose que vous feriez mieux de recharger Apache config et de ne pas redémarrer Apache . Mais je ne voudrais pas aller dans cette voie et simplement modifier Dockerfile, reconstruire et réexécuter l'image.

modifier pour le lien: https://docs.docker.com/engine/reference/commandline/exec/

1
2Fast2BCn

Pour mettre à jour les configurations Apache, vous devez:

  1. Remplacez les configurations Apache.

    une. Si vous avez un dossier de configuration mappé de l'extérieur du conteneur, vous devez mettre à jour les configurations en dehors du conteneur . B. Si vos configurations Apache sont stockées dans un conteneur, vous devrez exécuter quelque chose comme ceci:

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

  2. Do Redémarrage Apache Graceful :

    Sudo docker exec -it YOUR_CONTAINER_NAME apachectl gracieux

0
Sergey