Si vous utilisez Rails et que vous implémentez un traitement périodique, vous mentionnerez probablement «à chaque fois». De plus, l'utilisation de Docker dans un environnement de développement est devenue courante de nos jours. Cette fois, je vais résumer ce à quoi vous devez faire attention lorsque vous l'utilisez dans un tel environnement. Il n'y a pas de code Rails. Il s'agit des paramètres Docker.
Docker Ruby 2.6.3 Rails 5.2.3
Réalisez un traitement périodique à chaque fois dans l'environnement Docker
Il semble que cron n'est pas installé dans Docker par défaut, alors installez et démarrez cron. Veuillez vous référer à un autre article pour savoir comment commencer à tout moment.
Voici les paramètres.
Dockerfile
Dockerfile
FROM ruby:2.6.3 #la version convient à l'environnement
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 \ #← Installation
&& rm -rf /var/lib/apt/lists/*
RUN npm install n -g
RUN n 10.15.3
RUN service cron start #← Démarrer 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/
Ensuite, construisez et montez le conteneur comme d'habitude.
N'oubliez pas non plus de vérifier le démarrage avec la commande suivante.
$ service cron status
S'il est en cours d'exécution, vous verrez «[ok] cron est en cours d'exécution».
Vous pouvez désormais l'utiliser à tout moment dans l'environnement Docker. En ce qui concerne chaque fois, je pense que les articles d'autres personnes sont bons, alors veuillez vous y référer.
L'article suivant de cette personne @ Esfahan a été très utile. Configurer cron avec Rails chaque fois
Recommended Posts