redémarrer nginx conteneur lorsque en amont des serveurs est mis à jour
Je tiens à ajouter/supprimer des serveurs dans mon nginx cours d'exécution à l'intérieur d'un conteneur docker
- Je utiliser AJOUTER une commande dans le Dockerfile pour ajouter mon nginx.conf dans /etc/nginx dir.
# Copy a configuration file from the current directory
ADD nginx.conf /etc/nginx/
puis dans ma course nginx conteneurs qui ont une conf comme ceci
# List of application servers
upstream app_servers {
server 172.17.0.91:9000;
server 172.17.0.92:9000;
server 172.17.0.93:9000;
}
comment redémarrer mon nginx prennent effet de la modification de nginx.conf?
vous en remercie d'avance!
- depuis que vous êtes à la modification de votre Dockerfile, vous devez reconstruire le panneau de l'image et donc d'exécuter un nouveau conteneur à partir de cette image. Il n'y a aucun moyen pour que l'nginx processus qui est à l'obsolescence du conteneur peut être redémarré pour lire un nouveau fichier de configuration il n'a pas.
- Je suppose que je ne comprenais pas vraiment docker très bien. J'ai pensé, des scripts externes, lors de la mise à jour, je vais le faire docker redémarrer ou quelque chose d'autre pour prendre effet. son un peu gênant à la reconstruction de l'image à nouveau. parce que j'ai eu d'autres scripts qui modifient la config nginx. Je suppose que je vais cesser d'utiliser nginx docker. mais bon, je utiliser docker fortement à d'autres applications. merci pour la réponse.
- En collaboration avec le Doyen de l'Armada de la grande réponse ci-dessous, je vous suggère de regarder dans le montage d'un volume avec la conf.d pour persister soit à partir du panneau d'accueil, un lecteur partagé, ou même d'un compartiment s3. Alors c'est facile à modifier, et un doux recharger obtient ça va. Aussi, en cas de doute, testez-le avant de recharger pour éviter les temps d'arrêt!
Vous devez vous connecter pour publier un commentaire.
pour recharger la NGINX configuration, exécutez la commande
docker kill-s HUP container_name
https://blog.docker.com/2015/04/tips-for-deploying-nginx-official-image-with-docker/
docker start <container name>
par la suite pour le ramener jusqu'de redémarrer le conteneur n'est pas recommandé lors de l'initialisation de Docker Essaim, car il peut supprimer le service nginx. Donc, si vous avez besoin d'un autre côté
docker restart
, Vous pouvez aller à l'intérieur du conteneur et il suffit d'exécuternginx -s reload
Par exemple, dans le panneau env, si vous avez le conteneur nommé
nginx
Si vous souhaitez redémarrer le processus de NGINX, redémarrez le conteneur en exécutant la commande:
https://blog.docker.com/2015/04/tips-for-deploying-nginx-official-image-with-docker/
Si vous voulez le faire à partir de l'intérieur d'un conteneur, vous aurez besoin de service/de configuration de la découverte. Des outils comme coreOS/etcd et Apache Zookeeper sont faites pour faciliter ce processus. Fair warning: pour les applications simples, ceux-ci peuvent être un peu difficiles à gérer.
Il est également docker-gen, ce qui est un peu plus facile à aller de l'avant. Il y a même un spécifique scripts pré-fabriqués pour exactement le scénario que vous décrivez.