簡體   English   中英

如何在Rails docker容器中以非root用戶身份執行cron任務?

[英]How can I execute cron task as a non-root user within the rails docker container?

我正在嘗試使用cron作為docker容器中的非root用戶。 容器已經由非root用戶擁有Rails應用程序,我想以同一用戶身份執行cron任務,同時使Rails服務器同時運行。 但是,當我運行docker-compose up -d ,出現錯誤消息cron:無法打開或創建/var/run/crond.pid:權限被拒絕

所以我的問題是,在具有Rails應用程序的容器中,是否可以以非root用戶身份執行cron任務。 請注意,出於安全原因,我嘗試不使用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

...

您可以隨時使用gem arask 它在Rails中運行任務,因此用戶是相同的。 只需從config/initializers/arask.rb引用您的任務,而不必運行cron。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM