基于STDOUT日志的docker运行状况检查

时间:2018-11-20 01:43:42

标签: ruby docker docker-swarm health-monitoring

我有一个将日志输出到STDOUT的脚本。我想对此进行监视,如果经过x秒而没有日志输出,则运行状况检查将失败并且容器应重新启动。

我有一些可以使用的东西(使用strace),但不是。我将在下面发布文件。有谁知道如何解决这个问题?

Dockerfile:

FROM ruby:2.5.1
RUN apt-get update
RUN dpkg --configure -a
ENV TZ=Europe/London
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y keyboard-configuration
RUN apt-get install -y  --fix-missing curl gnupg build-essential mosh iceweasel git libappindicator1 postgresql libpq-dev xvfb xorg dbus-x11
RUN apt-get install -y --fix-missing libxss1 nodejs xfonts-100dpi xfonts-75dpi sqlite libindicator7 unzip wget curl bzip2 libssl-dev libreadline-dev zlib1g-dev strace
RUN ln -sf /usr/bin/nodejs /usr/local/bin/node
RUN gem install bundler activerecord activesupport watir watir-scroll nokogiri pg pry forgery rspec headless rake vcr webmock rails logger
WORKDIR /home/
COPY . .
HEALTHCHECK --interval=25s --timeout=5s --retries=5 CMD strace -p $(pgrep -n ruby) 2>&1 | grep -m 1 write\(
CMD ["ruby", "./test.rb"]

test.rb:

require 'logger'
$logger = Logger.new(STDOUT)
$logger.level = Logger::DEBUG
loop do
  sleep 5
  $logger.warn 'hi'
end

运行docker container log时,日志将按预期输出,但是运行状况始终为starting,并且启动后不久会认为日志已失败并重新启动。我打算在工作后使用Docker Swarm。

0 个答案:

没有答案