🙄

【Docker】Docker + Rails で wheneverを使う

2022/04/14に公開

書いてあること

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