Exécuter des rails à chaque fois dans le docker

Motivation

J'ai essayé d'utiliser every qui exécute Rails régulièrement, mais j'ai décidé de le faire avec docker car il était difficile de gérer les variables d'environnement et les autorisations lors de sa mise en œuvre directement sur Mac.

Conditions préalables

L'environnement d'exécution est le suivant ・ Rubis 2.6.3 ・ Rails 5.2.4 · MySQL 8.0.19

Lié à Docker

Dockfile, docker-compose.yml ressemble à ceci Ce n'est pas très différent des paramètres de docker normaux, mais comme nous l'utilisons à chaque fois, nous avons ajouté les paramètres pour installer corn et exécuter cron au premier plan.

FROM ruby:2.6.3
#spécification de la version ruby

#installation de gemmes
RUN apt-get update -qq && \
    apt-get install -y build-essential \ 
                       libpq-dev \        
                       nodejs

#installation de cron
RUN apt-get install -y cron 

RUN mkdir /my_app

WORKDIR /my_app

COPY Gemfile /my_app/Gemfile
COPY Gemfile.lock /my_app/Gemfile.lock

RUN gem install bundler
RUN bundle install

COPY . /my_app

#Écrire crontab avec chaque fois
RUN bundle exec whenever --update-crontab 

#Exécutez cron au premier plan
CMD ["cron", "-f"] 

docker-compose.yml


version: '2'
services:
  db:
    image: mysql:8.0.19
    command: 
      --default-authentication-plugin=mysql_native_password
    volumes:
      - ./mysql-confd:/etc/mysql/conf.d
      - mysql-data:/var/lib/mysql    #Pour la persistance des données
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: 1
      # MYSQL_DATABASE: app_development
      MYSQL_USER: root
      # MYSQL_PASSWORD: password
      TZ: Asia/Tokyo
  app:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/my_app   
      - bundle:/usr/local/bundle   
    ports:
      - "3000:3000"
    links:
      - db

volumes:
  mysql-data:
  bundle:      #Vous n'avez pas besoin de reconstruire après l'installation du bundle

chaque fois que la relation

config/schedule.rb


#Rails parce que vous devez démarrer les rails à tout moment.Utiliser la racine
require File.expand_path(File.dirname(__FILE__) + "/environment")

#Il fait bien les variables d'environnement
ENV.each { |k, v| env(k, v) }

#Fichier pour écrire des journaux
set :output, error: 'log/crontab_error.log', standard: 'log/crontab.log'
set :environment, :development

#Toutes les 2 minutes`sample_task`de`scheduled_task`Courir
every 2.minutes do
  rake 'sample_task:scheduled_task'
  # runner "Test.yakisoba", :environment => :development #exemple de coureur
end

Commande que vous souhaitez exécuter

/lib/tasks/sample_task.rb


namespace :sample_task
  desc "scheduled_task"
  task scheduled_task: :environment do
     .....Fonction que vous souhaitez exécuter
    end
  end
end

Recommended Posts

Exécuter des rails à chaque fois dans le docker
[Docker] À utiliser à tout moment avec Docker + Rails
Exécutez Payara avec Docker
Exécutez TAO Core avec Docker
[Docker] Construction de l'environnement Rails 5.2 avec docker
[Construction de l'environnement avec Docker] Rails 6 et MySQL 8
Faites fonctionner Jupyter Lab n'importe où avec Docker
Construction d'environnement de rails avec Docker (apocalypse personnelle)
Construction de Rails 6 et environnement PostgreSQL avec Docker
Construire un environnement Rails 6 + MySQL avec Docker compose
Déployer sur heroku avec Docker (Rails 6, MySQL)
Rails Docker-Partie 1-
Rails Docker ~ Partie 2 ~
Exécutez Ubuntu + ROS avec Docker sur Mac
Comment exécuter Blazor (C #) avec Docker
Comment créer un environnement Rails 6 avec Docker
Présentation de Rspec avec Ruby on Rails x Docker
Créez un notebook Jupyter avec Docker et exécutez ruby
[Rails] Comment créer un environnement avec Docker
Déployer le bot Line avec rails5 + Docker + Heroku Note
Facile à afficher Hello World avec Rails + Docker
Docker x Rails 6 (Mémo)
[Rails 6] Erreur d'exécution avec $ rails s
Exploser Docker avec WSL2
Utiliser Puphpeteer avec Docker
Manipuler le dispositif avec des rails
[Rails] Didacticiel Apprendre avec les rails
Exploitez Emby avec Docker
[Rails] Test avec RSpec
[Rails] Développement avec MySQL
Prend en charge la multilinguisme avec Rails!
PHP jetable avec Docker
Exécutez l'ancien Vivado avec le système d'exploitation invité de Docker en tant que CentOS 7.4
Exécutez des tests Ruby on Rails RSpec avec des actions GitHub
Erreur rencontrée avec les notes lors du déploiement de docker sur des rails
Exécuter les meilleures pratiques RSpec, Brakeman, Rubocop, Rails avec overcommit
Exécutez Mosquitto avec Docker et essayez la communication WebSocket avec MQTT
Environnement Build Rails (API) x MySQL x Nuxt.js avec Docker
Utiliser GDAL avec Python avec Docker
[Rails 6] Ancrez les applications Rails existantes [Docker]
Exécuter un lot avec docker-compose avec Java batch
J'ai créé un environnement de développement avec rails6 + docker + postgreSQL + Materialise.