🙄
【Docker】Docker + Rails で wheneverを使う
書いてあること
Docker + Railsな環境で、wheneverを使う際に気をつけるべきこと
環境
Docker
Ruby 2.6.3
Rails 5.2.3
やりたいこと
Docker環境にてwheneverを使って定期実行処理を実現する
結論
Dockerにはcronがデフォルトでインストールされていないのでcronをインストール&起動させる
wheneverの起動方法は別記事を参照!!
以下、設定内容
Dockerfile
Dockerfile
FROM ruby:2.6.3 # versionは環境に合わせる
ENV LANG C.UTF-8
ENV TZ Asia/Tokyo
RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
nodejs \
npm \
vim \
default-mysql-client \
cron \ # ← インストール
&& rm -rf /var/lib/apt/lists/*
RUN npm install n -g
RUN n 10.15.3
RUN service cron start # ← cronの起動
RUN gem install bundler -v 2.0.1
RUN gem install mysql2 -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib
RUN mkdir /app
ENV APP_ROOT /app
ENV RAILS_ENV development
WORKDIR $APP_ROOT
ADD ./.git-credentials /root/.git-credentials
RUN git config --global credential.helper store
ADD ./app/Gemfile $APP_ROOT/
ADD ./app/Gemfile.lock $APP_ROOT/
RUN bundle install
ADD ./app/ $APP_ROOT/
あとはcontainerをbuild & upする
$ service cron status
コマンドで、起動確認
これで、Docker環境でもwheneverが使えるようになる
Discussion