0
votes

Se connecter à l'hôte du conteneur Docker ne fonctionne pas

J'ai une application basée sur des microservices et les services fonctionnent bien si je les déploie sur une machine hôte. Mais maintenant, j'aimerais apprendre Docker, alors j'ai commencé à utiliser des conteneurs sur une machine à base de Linux. Voici un exemple de fichier Docker, c'est vraiment simple: xxx

Mon problème est que, j'essaie d'écrire mon journal d'application de démarrage à ressort à la machine hôte. C'est pourquoi j'utilise des volumes de données. À la fin, il s'agit de la commande Comment exécuter le conteneur: xxx

mais à plus long terme, tous les services seront sous "Docker-compose". C'est juste pour le test, quelque chose comme une preuve de concept.

première question est pourquoi il n'écrit pas le journal au bon endroit. (Dans l'un des volumes définis.) C'est ce que j'ai défini dans la configuration Log4J2 Config XML. Si j'utilise la configuration XML sur local sans docker, tout fonctionne bien. Lorsque je me connecte au conteneur, je peux voir les volumes montés et je peux "CD". Et je peux aussi faire ceci: xxx

afin que le fichier soit créé et que vous puissiez être vu à partir du conteneur et de la machine hôte. Qu'est-ce que je fais mal? Je pense que l'application peut choisir la configuration du journal, car lorsque je viens de définir un dossier interne comme emplacement du fichier journal, il enregistre les trucs à l'intérieur du conteneur.

et j'ai également défini les autorisations de Tout le volume (et ses enfants) à 777 pour tester temporairement si les autorisations étaient le problème. Mais non. Toute aide serait très appréciée!

Ma deuxième question, existe-t-il un bon outil Web sur Linux où je peux gérer mes conteneurs. Commencez-les, arrêtez alors, etc ... Je le googla dehors et je l'ai trouvé, mais pas sûr de savoir lequel est le meilleur et gratuit pour les besoins de base, et lequel est assez sécurisé.


1 commentaires

Votre deuxième question est hors sujet (questions nous demandant de recommander ou de trouver un livre, un outil, une bibliothèque de logiciels, un didacticiel ou une autre ressource hors site sont hors tension pour débordement de pile car ils ont tendance à attirer des réponses et des spams d'opinion. le problème et ce qui a été fait jusqu'à présent pour le résoudre)


3 Réponses :


0
votes

Vous avez une place dans votre point d'entrée après le log4j2- et avant prod.xml: xxx

Ce pourrait être un problème.


1 commentaires

Non, c'est à quel point la pâte de copie fonctionne. Il n'y a pas d'espace sur ce point. Malheureusement. Je serais vraiment heureux si c'était la question.



1
votes

Juste pour fournir certaines étapes pour la vérification:

Boot Log4J et Spring En général, ne doit pas être au courant des éléments liés à Docker, tels que des volumes, des dossiers mappés, etc.

, configurez la journalisation de l'application comme si elle fonctionne sans docker, donc si vous souhaitez un fichier local - assurez-vous que l'application produit en effet le fichier de journalisation dans un dossier de votre choix.

Le prochain L'étape serait mappant le dossier avec des volumes dans Docker / Docker-Compose. Mais d'abord, veuillez valider la première étape: xxx

si le fichier de journalisation n'existe pas son problème Java et vous devez configurer la journalisation correctement. Sinon, c'est un problème de docker.


1 commentaires

Tout fonctionne bien sans docker. Cela fonctionne également bien si je configurais la journalisation pour produire le fichier journal dans un dossier dans le conteneur. Mais lorsque ce dossier est sur un volume monté sur l'hôte, aucun fichier journal créé. L'application lit la configuration log4j à partir du volume monté. Il semble donc que mon application puisse lire à partir de là. Mais il ne peut pas écrire à des volumes montés.



3
votes

mise à jour: strong>

a réussi à résoudre ce problème après avoir passé quelques nuits avec ceci. P>

J'ai eu plusieurs problèmes. Tout d'abord, l'ordre des propriétés du système dans la section d'entrée Dockerfile n'était pas tout à fait correct. Le P>

-v /tao-elszamolas/logs:/tao-elszamolas/logs


0 commentaires