docker exec java app fond joindre des journaux
Pour une application Java s'exécutant dans un conteneur docker, où dois-je sortir mes journaux pour que docker logs-f puisse lire la sortie du journal de l'application java après son exécution pendant un certain temps?
J'exécute l'application java qui se trouve dans le conteneur docker actif avec quelque chose comme ce qui suit
docker exec -d container-name java -jar /path-to-jar/java-app-1.0-SNAPSHOT.jar
Jusqu'à présent, il exécute mon application java Spring Boot.
L'une ou l'autre des approches suivantes fonctionnerait-elle?
docker exec -d container-name java -jar /path-to-jar/java-app-1.0-SNAPSHOT.jar > /var/log/docker-id.log
Ou définir le chemin du journal java paramètres à une destination particulière?
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>
1 answers
Pour exécuter une application dans docker et pouvoir afficher les journaux, puis l'exécuter comme suit fonctionnera.
Dockerfile
FROM base-image
COPY app.jar /opt/app.jar
CMD ["java","-jar","/opt/rate-upload-tool.jar"]
Créer une image Docker
docker build -t java-app-image-name .
Exécutez le panneau de l'image en arrière-plan
docker run --name app-container-name -d java-app-image-name
Suite à cela, vous pourrez afficher les journaux de docker
docker logs -f app-container-name