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>
Author: Robbo_UK, 2016-11-08

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
 0
Author: Robbo_UK, 2016-11-28 11:17:06