Базовая проверка работоспособности докера по журналам STDOUT - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть скрипт, который выводит логи в 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, когда это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...