Как я могу выполнить задачу cron как пользователь без полномочий root в контейнере doils rails? - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь использовать cron как пользователь без полномочий root в контейнере Docker.В контейнере уже есть приложение rails пользователем без полномочий root, и я хочу выполнять задачи cron от имени того же пользователя, одновременно запуская сервер rails.Однако, когда я запускаю docker-compose up -d, я получаю сообщение об ошибке: cron: невозможно открыть или создать /var/run/crond.pid: В доступе отказано

Так что мой вопрос:любой способ выполнить задачу cron от имени пользователя без полномочий root в контейнере с приложением rails. Просто чтобы вы знали, я пытался не использовать учетную запись root по соображениям безопасности.Заранее спасибо!

Вот мой докер файл беду ...

FROM ruby:2.5

RUN apt-get update -qq && apt-get install -y --no-install-recommends \
    build-essential \
    libpq-dev \
    nodejs \
    cron \
    && rm -rf /var/lib/apt/lists/* \
    && apt-get clean

ENV \
 USER=new_user \
 GROUP=new_user \
 APP_ROOT=/var/www/new_user \
 HOME=/home/new_user \
 RAILS_PATH=./apps/server/new_user

RUN groupadd $GROUP && \
 useradd -g $GROUP $USER

RUN mkdir -p $APP_ROOT && \
 mkdir -p $HOME

WORKDIR $APP_ROOT

COPY $RAILS_PATH/Gemfile .
COPY $RAILS_PATH/Gemfile.lock .
COPY $RAILS_PATH/config/puma.rb config/puma.rb
COPY $RAILS_PATH/config/schedule.rb config/schedule.rb

RUN \
 gem update --system && \
 gem install bundler && \
 bundle config --global build.nokogiri --use-system-libraries && \
 bundle config --global jobs 2 && \
 bundle install --path=vendor/bundler

RUN \
 chown -R $USER $HOME && \
 chown -R $USER $APP_ROOT && \
 chgrp -R $GROUP $APP_ROOT && \
 chgrp -R $GROUP $APP_ROOT

USER $USER

RUN bundle exec whenever --update-crontab

CMD cron -f && bundle exec puma -C config/puma.rb

...

1 Ответ

0 голосов
/ 05 ноября 2018

Вы можете использовать камень arask вместо любого другого.Он запускает задачи в Rails, так что пользователь такой же.Вместо этого просто ссылайтесь на свои задачи из config/initializers/arask.rb и забудьте о запуске cron.

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