[RUBY] So installieren Sie Docker in der lokalen Umgebung einer vorhandenen Rails-App [Rails 6 / MySQL 8]

Einführung

Dieser Artikel ist das Verfahren, mit dem ich "Docker" in die lokale Umgebung der vorhandenen Portfolio-App eingeführt habe. Da das offizielle Dokument von "Docker" die Prozedurerklärung in "PostgreSQL" ist, gibt es keine Prozedurerklärung des offiziellen Dokuments, wenn es um "MySQL" geht. Außerdem sind die Informationen zu "Rails6" immer noch geringer als die zu "Rails5", weshalb die Informationen zur Kombination von "Rails6" + "MySQL" sehr gering waren. Daher habe ich selbst verschiedene Fehler erhalten und versucht und Fehler gemacht, daher hoffe ich, dass dieser Artikel denjenigen hilft, die "Docker" mit der Kombination von "Rails6" + "MySQL" einführen. Da der Autor ein Anfänger ist, der keine praktischen Erfahrungen bei der Jobsuche hat, kann es zu Fehlern kommen. In diesem Fall würde ich mich freuen, wenn Sie mich in den Kommentaren informieren könnten.

Voraussetzungen

Ausführung

Schritt 1 Erstellen Sie eine Docker-Datei

Erstellen Sie eine Docker-Datei im Stammverzeichnis der vorhandenen Anwendung und schreiben Sie wie folgt. ** * Diesmal lautet der Verzeichnisname der App sample_app. Ersetzen Sie dies durch den Verzeichnisnamen Ihrer App. ** **.

Dockerfile


FROM ruby:2.6.5
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
    && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs yarn
WORKDIR /sample_app
COPY Gemfile ./Gemfile
COPY Gemfile.lock ./Gemfile.lock
RUN gem install bundler
RUN bundle install
COPY . /sample_app
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]

Schritt 2 Erstellen Sie docker-compose.yml

Erstellen Sie wie in Schritt 1 "docker-compose.yml" im Stammverzeichnis der vorhandenen Anwendung und schreiben Sie es wie folgt.

docker-compose.yml


version: '3' #docker-Version verfassen
services:
  db:
    image: mysql:8.0.21 #Mit vorhandenen Apps kombinieren. Zum Terminal[$ mysql --version]Bestätigen mit
    environment:
      MYSQL_ROOT_PASSWORD: vxgbizakqc #Ihr Passwort
      MYSQL_DATABASE: root
    ports:
      - "4306:3306"
    volumes:
      - ./mysql-confd:/etc/mysql/conf.d
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/sample_app
    ports:
      - 3000:3000
    depends_on:
      - db
    tty: true
    stdin_open: true
volumes:
  mysql-data:

Schritt 3 Erstellen Sie entrypoint.sh

Erstellen Sie wie bei den Schritten 1 und 2 "entrypoint.sh" im Stammverzeichnis der vorhandenen Anwendung und schreiben Sie es wie folgt.

entrypoint.sh


#!/bin/bash
set -e

# Remove a potentially pre-existing server.pid for Rails.
rm -f /sample_app/tmp/pids/server.pid

# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"

Schritt 4 Bearbeiten Sie config / database.yml

Bearbeiten Sie database.yml im Verzeichnis config wie folgt.

config/database.yml



default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: vxgbizakqc #Ihr Passwort
  socket: /tmp/mysql.sock
  host: db

development:
  <<: *default
  database: sample_app_development

test:
  <<: *default
  database: sample_app_test

Schritt 5 Erstellen Sie ein Docker-Image

Führen Sie den folgenden Befehl im Terminal aus, um ein Docker-Image zu erstellen.

Terminal


MacBook-Pro:sample_app$ docker-compose build

Schritt 6 Starten Sie den Docker-Container

Führen Sie den folgenden Befehl im Terminal aus, um den Docker-Container zu starten.

Terminal


MacBook-Pro:sample_app$ docker-compose up -d

Schritt 7 Erstellen Sie eine Datenbank im Container

Führen Sie den folgenden Befehl im Terminal aus, um eine Datenbank im Container zu erstellen.

Terminal


MacBook-Pro:sample_app$ docker-compose run web rails db:create

Durch Ausführen des obigen Befehls wird eine Datenbank erstellt, die auf der zuvor bearbeiteten Datei "database.yml" basiert. Wenn die Datenbank erfolgreich erstellt wurde, wird Folgendes angezeigt.

Terminal


reating sample_app_web_run ... done
Created database 'sample_app_development'
Created database 'sample_app_test'

Schritt 8 Führen Sie die Migration der erstellten Datenbank aus

Führen Sie den folgenden Befehl im Terminal aus, um die Datenbankmigration auszuführen.

Terminal


MacBook-Pro:sample_app$ docker-compose run web rails db:migrate

Wenn die Datenbankmigration erfolgreich ist, wird Folgendes angezeigt.

Terminal


Creating sample_app_web_run ... done
== 20209165960112 DeviseCreateUsers: migrating ================================
-- create_table(:users)
   -> 0.0253s

  #Unterlassung

-- add_index(:notifications, :comment_id)
   -> 0.0251s
== 20209165960112 CreateNotifications: migrated (0.1280s) =====================

Schritt 9 Installieren Sie Gem

Nun, dies ist der letzte Teil der langen Einführung von Docker. Führen Sie den folgenden Befehl im Terminal aus, um Gem zu installieren.

Terminal


MacBook-Pro:sample_app$ docker-compose exec web bundle install

das ist alles! !! Sie können die Anwendung sehen, indem Sie eine Verbindung zu localhost: 3000 herstellen.

Verweise

Dieses Mal konnte ich Docker vorstellen, indem ich mich auf die folgenden Artikel und Video-Unterrichtsmaterialien bezog. Vielen Dank an alle, die den Artikel geschrieben haben, und an Herrn Kojima, den Schöpfer der Video-Unterrichtsmaterialien.

Recommended Posts

So installieren Sie Docker in der lokalen Umgebung einer vorhandenen Rails-App [Rails 6 / MySQL 8]
SSL in der lokalen Umgebung von Docker / Rails / Puma
Führen Sie Docker in die Entwicklungs- und Testumgebung vorhandener Rails- und MySQL-Apps ein
[Rails / Heroku / MySQL] So setzen Sie die Datenbank der Rails-App auf Heroku zurück
[Rails] So erstellen Sie eine Umgebung mit Docker
So lösen Sie die lokale Umgebungskonstruktion von Ruby on Rails (MAC)!
So migrieren Sie eine in einer lokalen Docker-Umgebung erstellte Webanwendung nach AWS
[Docker] So sichern und wiederherstellen Sie DB-Daten der Rails-Anwendung auf Docker-Compose [MySQL]
Nachdem ich Progate gelernt hatte, versuchte ich, eine SNS-Anwendung mit Rails in der lokalen Umgebung zu erstellen
Rails6 Ich habe versucht, Docker in eine vorhandene Anwendung einzuführen
[Schienen] So zeigen Sie Bilder in der Ansicht an
Verfahren zum Einführen von Docker in die Entwicklungsumgebung vorhandener Rails-Apps [Rails, MySQL, Docker]
So erstellen Sie mit Docker ~ Vue ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
Über den Fall, in dem der Freeter "Docker" versucht hat, Docker in die vorhandene Rails-Anwendung einzufügen
Installieren Sie, indem Sie die Version von Django in der Docker-Umgebung angeben
Für diejenigen, die MySQL für die Datenbank in der Umgebungskonstruktion von Rails6 ~ verwenden möchten.
[Rails] So löschen Sie MySQL-Daten aus der Produktionsumgebung, nachdem Sie sie in die Entwicklungsumgebung gestellt haben
Verwendung von git mit der Leistung von jgit in einer Umgebung ohne git-Befehle
So installieren Sie Swiper in Rails
[Rails] Was tun, wenn Sie versehentlich eine Bundle-Installation in einer Produktionsumgebung in Ihrer lokalen Umgebung durchführen?
Ich habe versucht, die Cache-Funktion von Application Container Cloud Service in der lokalen Umgebung zu entwickeln
[Webpacker] Zusammenfassung der Installation von Bootstrap und jQuery in Rails 6.0
So installieren Sie Pry nach dem Erstellen einer Rails-Entwicklungsumgebung mit Docker
Wie installiere ich die in Ubuntu verwendete Sprache und wie erstelle ich die Umgebung?
So erstellen Sie eine Rails + Vue + MySQL-Umgebung mit Docker [neueste Version 2020/09]
So ermitteln Sie die Länge einer Audiodatei mit Java
Verwendung von MySQL im Rails-Tutorial
So erstellen Sie eine Rails 6-Umgebung mit Docker
[Programmieranfänger] Was tun, wenn Schienen zu einem Fehler in der lokalen Entwicklungsumgebung werden?
So erstellen Sie eine App mit Ruby on Rails (vorausgesetzt, die Umgebung wurde erstellt)
Ausführen mit normalen Befehlen für die Entwicklungssprache in der Docker-Entwicklungsumgebung
Führen Sie Redmine in der lokalen Umgebung von Windows 10 Pro-Use Docker Desktop für Windows aus
So überprüfen Sie das Protokoll im Docker-Container
So installieren Sie Titan 2D (v4.2.0) in einer virtuellen Umgebung
Rails6.0 ~ So erstellen Sie eine umweltfreundliche Entwicklungsumgebung
Verwendung von JQuery in Rails 6 js.erb
[Rails] Verwendung von PostgreSQL in einer Vagrant-Umgebung
So überprüfen Sie Rails-Befehle im Terminal
So installieren Sie Docker
[Rails5.2] Unterstützung für Piktogramme von MySQL 5.7 in Docker (Zeichencode in utf8mb4 ändern)
[Rails] So bedienen Sie die in der Hauptanwendung verwendete Hilfsmethode mit Administrate
So erstellen Sie eine eindeutige Datenkombination in der Schienen-Zwischentabelle
So installieren Sie MySQL
So stellen Sie die Anzeigezeit in Rails auf japanische Zeit ein
[Rails] So ändern Sie den Spaltennamen der Tabelle
Befehlsnotiz zum Installieren von xeyes in der Ubuntu-Docker-Umgebung
[Rails] So erhalten Sie den Inhalt starker Parameter
Installieren Sie MySQL 5.6 unter CentOS6 [So geben Sie die Version an]
Installieren Sie mehrere Senden-Schaltflächen in der Rails-Ansicht, um den Wert der gedrückten Schaltfläche abzurufen
So überprüfen Sie die in der PC-Entwicklungsumgebung auf Ihrem Smartphone erstellte WEB-Anwendung