Führen Sie Rails immer im Docker aus

Motivation

Ich habe versucht, "wann immer" zu verwenden, auf dem Rails regelmäßig ausgeführt wird, aber ich habe mich für Docker entschieden, da es schwierig war, Umgebungsvariablen und Berechtigungen zu verwalten, wenn es direkt auf dem Mac implementiert wurde.

Voraussetzungen

Die Ausführungsumgebung ist wie folgt ・ Ruby 2.6.3 ・ Schienen 5.2.4 · MySQL 8.0.19

Docker verwandt

Dockfile, docker-compose.yml sieht so aus Es unterscheidet sich nicht wesentlich von den normalen Docker-Einstellungen, aber da wir sie immer verwenden, haben wir die Einstellungen für die Installation von "corn" und das Ausführen von cron im Vordergrund hinzugefügt.

FROM ruby:2.6.3
#Ruby-Versionsspezifikation

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

#Cron-Installation
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

#Schreiben Sie crontab mit wann immer
RUN bundle exec whenever --update-crontab 

#Führen Sie cron im Vordergrund aus
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    #Für die Datenpersistenz
    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:      #Sie müssen nach der Bundle-Installation nicht neu erstellen

wann immer Beziehung

config/schedule.rb


#Schienen, weil Sie Schienen immer starten müssen.Verwenden Sie root
require File.expand_path(File.dirname(__FILE__) + "/environment")

#Es macht die Umgebungsvariablen gut
ENV.each { |k, v| env(k, v) }

#Datei zum Schreiben von Protokollen
set :output, error: 'log/crontab_error.log', standard: 'log/crontab.log'
set :environment, :development

#Alle 2 Minuten`sample_task`von`scheduled_task`Laufen
every 2.minutes do
  rake 'sample_task:scheduled_task'
  # runner "Test.yakisoba", :environment => :development #Läufer Beispiel
end

Befehl, den Sie ausführen möchten

/lib/tasks/sample_task.rb


namespace :sample_task
  desc "scheduled_task"
  task scheduled_task: :environment do
     .....Funktion, die Sie ausführen möchten
    end
  end
end

Recommended Posts

Führen Sie Rails immer im Docker aus
[Docker] Wird immer mit Docker + Rails verwendet
Führen Sie Payara mit Docker aus
Führen Sie TAO Core mit Docker aus
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
[Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8
Lassen Sie Jupyter Lab überall mit Docker arbeiten
Schienenumgebungskonstruktion mit Docker (persönliche Apokalypse)
Erstellen einer Rails 6- und PostgreSQL-Umgebung mit Docker
Mit Docker auf Heroku bereitstellen (Rails 6, MySQL)
Rails Docker-Teil 1-
Rails Docker ~ Teil 2 ~
Führen Sie Ubuntu + ROS mit Docker auf dem Mac aus
So führen Sie Blazor (C #) mit Docker aus
So erstellen Sie eine Rails 6-Umgebung mit Docker
Einführung in Rspec mit Ruby on Rails x Docker
Erstellen Sie mit Docker ein Jupyter-Notizbuch und führen Sie Ruby aus
[Rails] So erstellen Sie eine Umgebung mit Docker
Stellen Sie Line Bot mit Rails5 + Docker + Heroku Note bereit
Mit Rails + Docker einfach Hallo Welt anzuzeigen
Docker x Rails 6 (Memo)
[Rails 6] Laufzeitfehler mit $ Rails s
Explodiere Docker mit WSL2
Verwenden Sie Puphpeteer mit Docker
Gerät mit Schienen handhaben
[Rails] Lernen mit Rails Tutorial
Bedienen Sie Emby mit Docker
[Schienen] Test mit RSpec
[Rails] Entwicklung mit MySQL
Unterstützt Mehrsprachigkeit mit Rails!
Einweg-PHP mit Docker
Führen Sie das alte Vivado mit Dockers Gastbetriebssystem als CentOS 7.4 aus
Führen Sie Ruby on Rails RSpec-Tests mit GitHub-Aktionen aus
Fehler beim Bereitstellen von Docker auf Schienen mit Notizen
Führen Sie RSpec, Brakeman, Rubocop und Rails Best Practices mit Overcommit aus
Führen Sie Mosquitto mit Docker aus und versuchen Sie die WebSocket-Kommunikation mit MQTT
Build Rails (API) x MySQL x Nuxt.js Umgebung mit Docker
Verwenden Sie GDAL mit Python mit Docker
[Rails 6] Dockerisieren Sie vorhandene Rails-Apps [Docker]
Führen Sie Batch mit Docker-Compose mit Java-Batch aus
Ich habe eine Entwicklungsumgebung mit Rails6 + Docker + PostgreSQL + Materialise erstellt.