4

docker で tomcat を実行していますが、ログが表示されません。それらは tomcat/logs の下のさまざまなログ ファイルに書き込まれますが、Tomcat が Docker コンテナで実行されている場合はそれらを見ることができません。

ここに私のDockerfileがあります

FROM tomcat:7-jre8
COPY target/MYAPP.war /usr/local/tomcat/webapps/MYAPP.war
RUN ["/usr/local/tomcat/bin/catalina.sh", "start"]

これは、イメージをビルドしてコンテナーを開始する方法です。

docker build -t MYAPP .
docker run -it --rm -p 8080:8080 --name MYAPP MYAPP

Tomcat が MYAPP.war をデプロイした後、アプリがログ ファイル /var/log/MYAPP.log を作成します。

Dockerfile をどのように修正し、それを実行するためにどのコマンドを使用する必要があるか (「docker run ...」) MYAPP MYAPP" /var/log/MYAPP.log の内容は stdout に出力されますか?

以下のコマンドを Dockerfile に追加しようとしましたが、役に立ちませんでした。

CMD tail -f /usr/local/MYAPP.log
4

6 に答える 6

3

すべてのログを stdout に送信するには、次の手順を実行する必要があります。

  1. How to stop application logs from logging into catalina.out in Tomcatの回答と同様に、CATALINA_OUT 環境変数の値を として渡すことができます/dev/stdout。これにより、すべての tomcat ログが stdout に送信されます。
  2. catalina ベースの logging.properties で、java.util.logging.ConsoleHandlerを保持し、他のハンドラーを削除します。
  3. ログを stdout に送信するように、アプリケーション (たとえば、log4j2 を使用している場合は log4j2.xml ファイル) のロギングの構成を変更します。log4j2 では、コンソールアペンダーを使用して実行できます。
于 2020-03-10T17:37:02.227 に答える