[RUBY] [Construction de l'environnement] Rails + MySQL + Docker (les débutants peuvent également l'utiliser en 30 minutes!)

Construction d'environnement à l'aide de Docker

J'ai entendu dire que créer un environnement est plus difficile que d'écrire du code.

Docker est facile!

Et pourquoi,,, ** Copiez et collez simplement ** Cependant, cela peut prendre un certain temps pour comprendre ... Commençons par un bref aperçu

Docker Outils de création d'environnements virtuels

récipient

Environnement virtuel lui-même (Docker exécute un conteneur au-dessus du moteur Docker)

image

Ce dont vous avez besoin pour exécuter un conteneur Docker.

Procédure de construction de l'environnement

①. Créer un projet (répertoire) et le déplacer` ``

$ mkdir nom de l'application $ cd nom de l'application ② .``` Créer Dockerfile, docker-compose.yml, Gemfile, Gemfile.lock ''

$ touch Dockerfile docker-compose.yml Gemfile Gemfile.lock

③. ```Ouvrez l'éditeur et copiez Dockerfile, docker-compose.yml, Gemfile à partir de ce qui suit` `` Dockerfile Un fichier qui génère automatiquement une image Docker

FROM ruby:2.5
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

RUN mkdir /myapp
WORKDIR /myapp

COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock

RUN bundle install
COPY . /myapp

FROM: Image et commande à utiliser RUN: Exécuter la commande WORKDIR: Paramètres du répertoire de travail COPY: Spécifiez la source de copie (côté hôte) et la destination de copie (côté environnement virtuel) des fichiers ou répertoires

Gemfile source 'https://rubygems.org' gem 'rails', '~> 5.2.3'

docker-compose.yml version: '3'

services:
    db:
        image: mysql:5.7
        environment:
            MYSQL_USER: root
            MYSQL_ROOT_PASSWORD: password
        ports:
            - "3306:3306"
        volumes:
            - ./db/mysql/volumes:/var/lib/mysql

    web:
        build: .
        command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
        volumes:
            - .:/myapp
            - gem_data:/usr/local/bundle
        ports:
            - 3000:3000
        depends_on:
            - db 
        tty: true
        stdin_open: true

volumes:
  gem_data:

version: La version de docker-compose. depend_on: affiche les dépendances et vous permet de contrôler l'ordre de démarrage. Ici, commencez par "db → web".

Qu'est-ce que Docker compose

Docker compose est une fonction qui automatise la procédure de création et d'exécution d'un service composé de plusieurs conteneurs et facilite la gestion. Avec Docker compose, vous pouvez préparer un fichier de composition et exécuter la commande une fois pour lire les paramètres de ce fichier et démarrer tous les conteneurs.

À propos du service

Dans Docker compose, chaque élément permettant d'exécuter une application est appelé un service. Habituellement nommé web (rails) et db (mysql).

À propos de rm -f tmp / pids / server.pid```

Le pid est l'ID de processus. Le pid est écrit dans tmp / pids / server.pid lors du démarrage du serveur Web de développement et supprimé lors de la fermeture. Si pid est écrit dans server.pid, le serveur sera jugé comme ** commençant **.

À propos des ports

ports:
  - 3000:3000

Ce qui précède signifie que le port 3000 dans le conteneur est mappé à 3000 sur l'hôte. Cela vous permettra d'accéder au serveur Web à l'intérieur du conteneur à l'adresse `` http: // localhost: 3000 ''.

À propos du volume

volumes:
   - ./db/mysql/volumes:/var/lib/mysql

Signifie de monter ./db/mysql/volumes sur l'hôte dans / var / lib / mysql à l'intérieur du conteneur. En termes simples, le conteneur Docker est ** synchronisé ** localement.

volumes :
   - .:/myapp

Désigne tous les répertoires de l'hôte avec . et le monte sur `` `` myapp dans le conteneur.

④ .``` Exécutez la commande suivante `` `

$ docker-compose run web rails new . --force --database=mysql

La commande run fera tout, de la création d'une image à la création et au démarrage d'un conteneur. Le service doit être spécifié dans l'argument. Puisque les volumes: -.: / La partie Myapp de docker-compose.yml est configurée pour synchroniser le docker avec le répertoire local, un fichier similaire sera généré localement en même temps après l'exécution de cette commande. ..

⑤. Remplacez (mot de passe: mot de passe, hôte: db) dans config / database.yml`

default: &default
   adapter: mysql2
   encoding: utf8
   pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
   username: root

mot de passe: mot de passe Ajouté #password hôte: db Changé de #localhost à db

⑥. ```Exécuter la commande suivante` ``

$ docker-compose build

Exécutez `` build '' lorsque le Gemfile est mis à jour

⑦ .``` Exécutez la commande suivante `` `

$ docker-compose up -d

Le conteneur démarre selon docker-compose.yml. Également exécuté lors de la prise en compte des modifications dans docker-compose.yml. L'option -d``` démarre en arrière-plan.

⑧. Exécutez la commande suivante

$ docker-compose run web rails db:create

Créez une base de données. Vous pouvez exécuter des commandes localement avec docker-compose run web```. (Pas besoin d'entrer dans le conteneur)

⑨. '' Exécutez la commande suivante et vérifiez si les deux conteneurs sont en place. (Terminé!)

$ docker ps

Une commande pour afficher le conteneur en cours d'exécution. Lorsque vous accédez à `` localhost: 3000 '', vous verrez l'habituel Yay! You're on Rails!.

`Si vous souhaitez supprimer le conteneur, procédez comme suit `

$ docker-compose down

Vérifiez si le conteneur a été supprimé avec docker ps```. Pour créer et démarrer un conteneur, exécutez docker-compose up -d` ''.

Résumé

Je pense que c'était assez facile! Développons l'application avec ça! : pouces vers le haut:

Recommended Posts

[Construction de l'environnement] Rails + MySQL + Docker (les débutants peuvent également l'utiliser en 30 minutes!)
[Construction de l'environnement avec Docker] Rails 6 et MySQL 8
[Docker] Construction de l'environnement de développement Rails6 / Ruby2.7 / MySQL8
Construction de l'environnement Rails Docker
Les débutants utilisent ubuntu dans la fenêtre pour préparer l'environnement des rails
Mémo de construction de l'environnement MySQL 5.7 (Docker)
[Docker] Construction de l'environnement Rails 5.2 avec docker
[Rails / MySQL] Construction de l'environnement Mac
Pour ceux qui souhaitent utiliser MySQL pour la base de données dans la construction de l'environnement de Rails6 ~.
Créez un environnement de développement d'applications Rails avec Docker [Docker, Rails, Puma, Nginx, MySQL]
Construction d'environnement avec Docker pour les débutants
Rails sur la procédure de construction de l'environnement Docker
Procédure de construction de l'environnement Docker "Rails 6 x MySQL 8" à partager avec les équipes
Apprentissage des instructions SQL ~ Construction de l'environnement ~ Docker + MySQL
[Docker] Utiliser des variables d'environnement dans Nginx conf
Construction d'environnement de rails avec Docker (apocalypse personnelle)
Construire un environnement Rails 6 + MySQL avec Docker compose
Utiliser docker dans un environnement proxy sur ubuntu 20.04.1
Modifier Mysql avec des commandes dans l'environnement Docker
Comment utiliser MySQL dans le didacticiel Rails
Construire un environnement pour Laravel + MySQL + phpMyadmin avec Docker
Rails & React & Webpacker & Manuel de construction de l'environnement MySQL
Comprendre en 5 minutes !! Comment utiliser Docker
[Construction de l'environnement Rails & Docker & MySQL] J'ai démarré le conteneur, mais je ne trouve pas MySQL ...?
[Première construction d'environnement] J'ai essayé de créer un environnement Rails6 + MySQL8.0 + Docker sur Windows 10.
[Rails] Comment utiliser PostgreSQL dans l'environnement Vagrant
Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]
[Rails] Comment supprimer les données MySQL de l'environnement de production après les avoir placées dans l'environnement de développement
[Même les débutants peuvent le faire! ] Comment installer Eclipse sur Windows 10 (construction de l'environnement Java)
Erreur de migration après avoir associé Activerecord dans l'environnement Rails5 + Docker (2)
Créez un environnement de développement Docker + Laravel PHP + Vue.js en 5 minutes
Erreur de migration après l'association Activerecord dans l'environnement Rails5 + Docker
Rails5 + MySQL8.0 + Construction d'environnement de volumes de premier niveau avec docker-compose
SSL dans l'environnement local de Docker / Rails / puma
Environnement Build Rails (API) x MySQL x Nuxt.js avec Docker
Création d'un environnement de base de données avec Docker dans Spring Boot (IntellJ)
Utiliser des images avec des rails
Créez un environnement de test MySQL (+ des millions de données de test) en 5 minutes
[Procédure 1 pour les débutants] Ruby on Rails: Construction d'un environnement de développement
Le code de sortie 1 se produit lorsque Rails est arrêté dans l'environnement Docker
Construction de l'environnement de développement Rails6 [Mac]
Ingénieur Rails Environnement Construction Ruby2.7.1
Rails6 (MySQL, environnement Ubuntu, Cloud9)
Construction de l'environnement des rails Rails5.2.1 ruby2.5.1 Catalina
Construction de l'environnement JavaFX dans Java 13
Mémo de construction de l'environnement Redmine (Docker)
Construction de l'environnement Docker × Spring Boot
Utilisez plusieurs cases à cocher dans Rails6!
[Docker] postgres, construction de l'environnement pgadmin4
[Docker] À utiliser à tout moment avec Docker + Rails