我正在使用Nginx方法将符号链接链接到/dev/stdout,以便任何要在“docker logs”中显示的日志文件都可以出现,但是这似乎无效。
我已经在/etc/crontab中测试过这个简单的cronjob,如果存在符号链接(指向/dev/stdout),它不会写入任何内容(据我所知),但是如果我删除符号链接,则会写入文件。
另外,如果我echo到/dev/stdout,它会被回显到命令行,但在'docker logs'中找不到...
问题:这应该起作用吗?(似乎在nginx中起作用)。否则,如何使'secondary'进程的日志出现在docker logs中。
参考:
Nginx Dockerfile显示了符号链接的方法:https://github.com/nginxinc/docker-nginx/blob/a8b6da8425c4a41a5dedb1fb52e429232a55ad41/Dockerfile
为此创建了一个官方的错误报告:https://github.com/docker/docker/issues/19616
我的Dockerfile:
FROM ubuntu:trusty
#FROM quay.io/letsencrypt/letsencrypt:latest # For testing
ENV v="Fri Jan 22 10:08:39 EST 2016"
# Setup the cronjob
ADD crontab /etc/crontab
RUN chmod 600 /etc/crontab
# Setup letsencrypt logs
RUN ln -sf /dev/stdout /var/log/letsencrypt.log
# Setup cron logs
RUN ln -sf /dev/stdout /var/log/cron.log
RUN ln -sf /dev/stdout /var/log/syslog
# Setup keepalive script
ADD keepalive.sh /usr/bin/keepalive.sh
RUN chmod +x /usr/bin/keepalive.sh
ENTRYPOINT /usr/bin/keepalive.sh
定时任务文件:
* * * * * root date >> /var/log/letsencrypt.log
保持连接脚本 keepalive.sh
#!/bin/bash
# Start cron
rsyslogd
cron
echo "Keepalive script running!"
while true; do
echo 'Sleeping for an hour...'
sleep 10
done