如何从docker集装箱获得特定的日志文件输出?
以下是我的Dockerfile
FROM tomcat:7-jre8 COPY target/MYAPP.war /usr/local/tomcat/webapps/MYAPP.war RUN ["/usr/local/tomcat/bin/catalina.sh", "start"]
这是我如何构build图像和启动它的容器:
docker build -t MYAPP . docker run -it --rm -p 8080:8080 --name MYAPP MYAPP
我的应用程序在tomcat部署MYAPP.war之后创build日志文件:/var/log/MYAPP.log
我应该如何修改Dockerfile以及我应该使用哪个命令来运行它(“docker run …”),以便在使用oneliner“docker run -it -rm -p 8080:8080 -name”启动容器MYAPP之后MYAPP MYAPP“/var/log/MYAPP.log的内容将被打印到标准输出?
我试图添加到Dockerfile下面的命令,但它没有帮助。
CMD tail -f /usr/local/MYAPP.log
你似乎对RUN
和CMD
的区别感到困惑。
RUN
指令用于在构build过程中运行命令。 它从不在容器中执行。 当你写…
RUN ["/usr/local/tomcat/bin/catalina.sh", "start"]
…这意味着在docker build
过程中,Docker将启动tomcat,但会立即杀死它并继续构build您的映像。
只有CMD
和ENTRYPOINT
指令定义了在使用ENTRYPOINT
run启动映像时将运行的命令。 所以可能你需要像这样的东西:
CMD /usr/local/tomcat/bin/catalina.sh start && tail -f /usr/local/MYAPP.log
可能是将日志直接写入标准输出而不是容器中的文件会更好。 重启后会丢失。