我有以下Dockerfile:
FROM ubuntu:16.04
RUN apt-get update
VOLUME ["/LOGS"]
COPY ./testServer .
ENTRYPOINT ./testServer 8600
“ testServer”具有正在写入的日志文件。它们位于目录“ LOGS”中。每次启动“ testServer”时,都会创建一个新日志。我想要做的是将目录中的最新日志文件“尾巴”到stdout / stderr。
我尝试添加:
CMD ["/bin/sh", "-c", "tail $( ls -Art /LOGS | tail -n 1 ) > out_server.log 2>&1"]
到Dockerfile(然后重新构建映像),但是它不起作用。
如何才能做到这一点?
TIA
而是使用tail,可以将日志文件符号链接到容器进程的stdout。为此,您需要将可执行文件包装在单独的脚本中,以便将其作为与容器主进程分开的进程启动。
要执行的脚本:
#!/bin/bash
# The application log will be redirected to the main docker container process's stdout, so # that it will show up in the container logs
touch /my/app/application.log
ln -sf /proc/1/fd/1 /my/app/application.log
# Execute my app
./testServer 8600
然后在docker文件中复制并执行脚本
COPY start_server.sh /the/above/script/start_server.sh
CMD ["/bin/bash", "/the/above/script/start_server.sh"]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句