[RUBY] Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]

introduction

Cet article est la procédure lorsque j'ai introduit Docker dans l'environnement local de l'application de portefeuille existante. Puisque le document officiel de Docker est l'explication de la procédure dans PostgreSQL, il n'y a pas d'explication de la procédure du document officiel en ce qui concerne MySQL. De plus, les informations sur Rails6 sont encore inférieures à celles sur Rails5, et par conséquent, les informations sur la combinaison de Rails6 + MySQL étaient très peu nombreuses. Par conséquent, j'ai moi-même eu diverses erreurs et j'ai essayé et commis des erreurs, donc j'espère que cet article aidera ceux qui introduisent Docker avec la combinaison de Rails6 + MySQL. Puisque l'auteur est un débutant qui n'a aucune expérience pratique de la recherche d'emploi, il peut y avoir des erreurs. Dans ce cas, je vous serais reconnaissant si vous pouviez me le faire savoir dans les commentaires.

Conditions préalables

version

Étape 1 Créer Dockerfile

Créez un Dockerfile dans le répertoire racine de l'application existante et écrivez comme suit. ** * Cette fois, le nom du répertoire de l'application est sample_app. Remplacez-le par le nom du répertoire de votre application. ** **

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"]

Étape 2 Créez docker-compose.yml

Comme à l'étape 1, créez docker-compose.yml dans le répertoire racine de l'application existante et écrivez-le comme suit.

docker-compose.yml


version: '3' #docker-composer la version
services:
  db:
    image: mysql:8.0.21 #Combinez avec des applications existantes. Vers le terminal[$ mysql --version]Confirmer avec
    environment:
      MYSQL_ROOT_PASSWORD: vxgbizakqc #Votre mot de passe
      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:

Étape 3 Créez entrypoint.sh

Comme pour les étapes 1 et 2, créez entrypoint.sh dans le répertoire racine de l'application existante et écrivez-le comme suit.

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 "$@"

Étape 4 Modifiez config / database.yml

Modifiez database.yml dans le répertoire config comme suit.

config/database.yml



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

development:
  <<: *default
  database: sample_app_development

test:
  <<: *default
  database: sample_app_test

Étape 5 Créez une image Docker

Exécutez la commande suivante dans le terminal pour créer une image Docker.

Terminal


MacBook-Pro:sample_app$ docker-compose build

Étape 6 Démarrez le conteneur Docker

Exécutez la commande suivante dans le terminal pour démarrer le conteneur Docker.

Terminal


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

Étape 7 Créez une base de données dans le conteneur

Exécutez la commande suivante dans le terminal pour créer une base de données dans le conteneur.

Terminal


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

L'exécution de la commande ci-dessus créera une base de données basée sur le database.yml édité précédemment. Si la base de données est créée avec succès, ce qui suit sera affiché.

Terminal


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

Étape 8 Exécutez la migration de la base de données créée

Exécutez la commande suivante dans le terminal pour exécuter la migration de la base de données.

Terminal


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

Si la migration de la base de données réussit, ce qui suit s'affiche.

Terminal


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

  #Omission

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

Étape 9 Installez Gem

Eh bien, c'est la dernière de la longue introduction de Docker. Exécutez la commande suivante dans le terminal pour installer Gem.

Terminal


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

c'est tout! !! Vous pouvez voir l'application en vous connectant à localhost: 3000.

Références

Cette fois, j'ai pu présenter Docker en me référant aux articles et matériels didactiques vidéo suivants. Merci à tous ceux qui ont écrit l'article et à M. Kojima, le créateur du matériel didactique vidéo.

Recommended Posts

Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]
SSL dans l'environnement local de Docker / Rails / puma
Présentez Docker à l'environnement de développement et à l'environnement de test des applications Rails et MySQL existantes
[Rails / Heroku / MySQL] Comment réinitialiser la base de données de l'application Rails sur Heroku
[Rails] Comment créer un environnement avec Docker
Comment résoudre la construction de l'environnement local de Ruby on Rails (MAC)!
Comment migrer une application Web créée dans un environnement Docker local vers AWS
[Docker] Comment sauvegarder et restaurer les données de base de données de l'application Rails sur docker-compose [MySQL]
Après avoir appris Progate, j'ai essayé de créer une application SNS en utilisant Rails dans l'environnement local
Rails6 J'ai essayé d'introduire Docker dans une application existante
[Rails] Comment afficher les images dans la vue
Procédure pour introduire Docker dans l'environnement de développement des applications Rails existantes [Rails, MySQL, Docker]
Comment créer un environnement [TypeScript + Vue + Express + MySQL] avec Docker ~ Vue ~
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
À propos du cas où "Docker" freeter a tenté de mettre Docker dans l'application Rails existante
Installer en spécifiant la version de Django dans l'environnement Docker
Pour ceux qui souhaitent utiliser MySQL pour la base de données dans la construction de l'environnement de Rails6 ~.
[Rails] Comment supprimer les données MySQL de l'environnement de production après les avoir placées dans l'environnement de développement
Comment utiliser git avec la puissance de jgit dans un environnement sans commandes git
Comment installer Swiper in Rails
[Rails] Que faire si vous effectuez accidentellement une installation groupée dans un environnement de production de votre environnement local
J'ai essayé de développer la fonction de cache d'Application Container Cloud Service dans l'environnement local
[Webpacker] Résumé de l'installation de Bootstrap et jQuery dans Rails 6.0
Comment installer Pry après avoir créé un environnement de développement Rails avec Docker
Comment installer le langage utilisé dans Ubuntu et comment créer l'environnement
Comment créer un environnement Rails + Vue + MySQL avec Docker [dernière version 2020/09]
Comment obtenir la longueur d'un fichier audio avec Java
Comment utiliser MySQL dans le didacticiel Rails
Comment créer un environnement Rails 6 avec Docker
[Débutant en programmation] Que faire lorsque les rails deviennent une erreur dans l'environnement de développement local
Comment créer une application avec ruby on rails (en supposant que l'environnement a été construit)
Comment exécuter avec des commandes de langage de développement normales dans l'environnement de développement Docker
Exécutez Redmine dans l'environnement local de Windows10 Pro-Use Docker Desktop pour Windows
Comment vérifier le journal dans le conteneur Docker
Comment installer Titan 2D (v4.2.0) dans un environnement virtuel
Rails6.0 ~ Comment créer un environnement de développement respectueux de l'environnement
Comment utiliser JQuery dans Rails 6 js.erb
[Rails] Comment utiliser PostgreSQL dans l'environnement Vagrant
Comment vérifier les commandes Rails dans le terminal
Comment installer Docker
[Rails5.2] Prise en charge des pictogrammes de Mysql 5.7 dans Docker (changez le code de caractère en utf8mb4)
[Rails] Comment utiliser la méthode d'assistance utilisée dans l'application principale avec Administrer
Comment créer une combinaison unique de données dans la table intermédiaire des rails
Comment installer MySQL
Comment régler l'heure d'affichage sur l'heure japonaise dans les rails
[Rails] Comment changer le nom de colonne de la table
Mémo de commande pour installer xeyes dans l'environnement docker ubuntu
[Rails] Comment obtenir le contenu des paramètres forts
Installez MySQL 5.6 sur CentOS6 [Comment spécifier la version]
Installez plusieurs boutons de soumission dans la vue Rails pour obtenir la valeur du bouton enfoncé
Comment vérifier l'application WEB créée dans l'environnement de développement PC sur votre smartphone