[PYTHON] Journal de sortie vers la console avec Flask + Nginx sur Docker

supposition

Je reconnais qu'il est préférable de configurer un serveur uwsgi en plus de flask et nginx, mais c'est le résultat de ce qui peut être fait à partir de la configuration actuelle.

Contexte

J'ai configuré un serveur Flask + Nginx sur Docker, mais le journal Flask n'est sorti que sous forme de fichier et je ne peux pas le vérifier à l'invite des journaux docker run ou docker. Je veux pouvoir le faire d'une manière ou d'une autre.

Configuration actuelle

Je vais l'omettre considérablement, mais c'est comme suit.

Dockerfile


FROM centos:centos7

CMD ["/bin/bash", "./start.sh"]

start.sh


# !/bin/bash

uwsgi --ini=uwsgi.ini
nginx -g "daemon off;"

uwsgi.ini


daemonize = /var/log/uwsgi/uwsgi.log

Dans l'état ci-dessus, le processus uwsgi s'exécute en tant que démon et Nginx en tant que travail de premier plan. Et tous les journaux sont envoyés dans /var/log/uwsgi/uwsgi.log spécifié par daemonize.

Correspondance

J'ai essayé plusieurs choses, mais cela n'a pas fonctionné, et par conséquent, la troisième méthode a fonctionné.

Ajouter explicitement la sortie de la console sur le flask

Je pense que la sortie de la console a déjà été faite, mais vérifiez si cela peut être fait en ajoutant un flux supplémentaire de sortie de la console.

logger.addHandler(logging.StreamHandler())

Cependant, daemonize semble envoyer ce qui est sorti en standard dans un fichier, et le contenu du flux ajouté est également sorti dans le fichier.

Définissez daemonize sur / dev / stdout

daemonize affiche la sortie standard et la sortie d'erreur vers le fichier spécifié, mais j'ai osé essayer d'en faire une sortie standard en sortant vers / dev / stdout. J'ai pu sortir avec succès sur la sortie de la console, mais la fonction de rotation du journal de flask vérifie le fichier et un message d'erreur est constamment affiché. J'ai cherché un moyen de supprimer la fonction de rotation du journal, mais j'ai abandonné parce que je ne pouvais pas la trouver.

uwsgi_check_logrotate()/lseek(): Illegal seek [core/logging.c line 494]

Surveiller les fichiers journaux avec la queue

Ajout de la surveillance de la queue sur le shell de démarrage. Confirmez que le journal peut être sorti à la fois vers le fichier et la console. J'ai besoin de faire correspondre les fichiers de sortie dans start.sh et uwsgi.ini, mais j'ai pu le faire pour le moment.

start.sh


#Partie supplémentaire
touch /var/log/uwsgi/uwsgi.log
tail -F /var/log/uwsgi/uwsgi.log > /dev/stdout &

uwsgi --ini=uwsgi.ini
nginx -g "daemon off;"

Recommended Posts

Journal de sortie vers la console avec Flask + Nginx sur Docker
Sortie du journal Python vers la console avec GAE
Comment se connecter à Docker + NGINX
[Avec diagramme d'image] Nginx + gunicorn + Flask converti en Docker [Partie 1]
(Remarque) Remarques sur la création de l'environnement TensorFlow + Flask + Nginx avec Docker Compose
Lancez l'application Flask avec Docker sur Heroku
Comment supprimer le journal avec Docker, ne pas collecter le journal
Exécutez Flask sur CentOS avec python3.4, Gunicorn + Nginx.
Sortie du journal de débogage avec GAE dev_appserver.py sur Eclipse + PyDev
De l'introduction de Flask sur CentOS au service sur Nginx et uWSGI
API avec Flask + uWSGI + Nginx
De la construction de l'environnement au déploiement pour flask + Heroku avec Docker
Jusqu'à ce que l'API créée par Flask + MySQL soit convertie en Docker
Publier la sortie de la console Jenkins sur Slack
Créer un serveur Flask avec Docker
Sortie vers un fichier csv avec Python
Sortie du journal de test unitaire avec python
Comment écraser la sortie sur la console
Il est maintenant temps d'installer DB avec Docker! Installation de la base de données pour les débutants sur Docker
Essayez de produire de l'audio avec M5 STACK
Développement d'applications avec Docker + Python + Flask
J'ai écrit un diagramme de configuration du système avec des diagrammes sur Docker
Wrapper lorsque vous souhaitez afficher la couleur utf-8 + ansi dans la console Windows
Je veux sortir froidement sur la console
Lier les applications WAS et FLASK sur docker
Envoyer du CSS compressé à Gzip avec Flask
Connectez-vous à MySQL avec Python dans Docker
Créer un environnement Python + uWSGI + Nginx avec Docker
J'étais accro à Flask sur dotCloud
Comment obtenir une sortie colorée sur la console
Résumé des paramètres de Nginx (édition Flask + Docker + Gunicorn)
Créer un service Web avec Docker + Flask
Afficher les informations utilisateur, etc. dans le journal Django
Construire un environnement de NGINX + NGINX Unit + MySQL avec Docker
Comment installer python3 avec docker centos
Créez une application flask faite avec tensorflow et dlib pour travailler sur centos7
Comment télécharger avec Heroku, Flask, Python, Git (4)
Connectez-vous à un serveur distant avec SSH
Un mémorandum pour faire WebDAV uniquement avec nginx
Paramètre pour afficher le journal de l'exécution de cron
Gagnez l'application Web Python + Flask avec Jenkins
Le journal Python n'est pas sorti avec docker-compose up
Hello World avec nginx + uwsgi + python sur EC2
Exécutez des applications Web Python avec NGINX + NGINX Unit + Flask
J'ai essayé de sortir LLVM IR avec Python
Créer un environnement de Nginx + uWSGI + Python (Django) avec docker
Connectez-vous à Yahoo Business avec Selenium Python
Démarrez Nginx avec docker sans Nginx dans CentOS8
Connectez-vous facilement à AWS avec plusieurs comptes
Comment installer OpenGM sur OSX avec macports
Introduction à Python avec Atom (en route)
Envoyer msgpack avec ajax à l'environnement flask (werkzeug)
Je veux enregistrer les entrées / sorties de fichiers sous Linux
Sortez la docstring de la fonction de test dans le rapport avec pytest-html
[CentOS8] Comment afficher la sortie Python standard dans le journal systemd