[Docker] Construction de l'environnement de développement Rails6 / Ruby2.7 / MySQL8

introduction

J'ai eu du mal à créer l'environnement avec Rails6 et MySQL avec Docker, je vais donc également laisser un mémorandum dans l'article.

Comme une pierre d'achoppement Contrairement à Rails5, Rails6 a nécessité l'introduction de Webpacker, un package de gemmes permettant d'utiliser Webpack avec Ruby on Rails, qui prend fortement en charge le développement frontal moderne.

Environnement / version

Procédure pour terminer la construction de l'environnement

  1. Préparez le dossier du projet
  2. Préparez 5 fichiers
  3. Décrivez chaque fichier
  4. Démarrer le projet Rails (rails nouveaux)
  5. Construisez l'image Docker
  6. Modifier database.yml
  7. Créer une base de données (db: create)
  8. Démarrez le conteneur

Construisez réellement l'environnement

1. Préparez le dossier du projet

Créez un dossier avec n'importe quel nom (il n'est pas nécessaire que ce soit une commande)

mkdir dockerSampleApp 

2. Préparez 5 fichiers

Créez un fichier dans le dossier créé en 1.

3. Décrivez chaque fichier

Dockerfile

Quel que soit le nom du dossier du projet, la partie de myapp peut être laissée en tant que myapp.

Dockerfile


FROM ruby:2.7

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 \
    && apt-get update -qq \
    && apt-get install -y nodejs yarn \
    && mkdir /myapp
    
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

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

docker-compose.yml

docker-compose.yml


version: '3'
services:
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: password
    ports:
      - '3306:3306'
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - mysql-data:/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
    ports:
      - "3000:3000"
    depends_on:
      - db
    stdin_open: true
    tty: true
volumes:
  mysql-data:
    driver: local

Gemfile

Gemfile


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

Gemfile.lock

Gemfile.lock


#N'écrivez rien dans ce fichier

entrypoint.sh

entrypoint.sh


#!/bin/bash
set -e

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

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

4. Démarrer le projet Rails (rails nouveaux)

Exécuter la commande

$ docker-compose run web rails new . --force --no-deps --database=mysql --skip-test --webpacker --api

À propos des options utilisées cette fois

-- --force Écraser le Gemfile existant -- --no-deps Ne démarre pas le service lié -- --database = mysql Spécifiez MySQL pour la base de données -- --skip-test Ignore l'installation de Minitest (car le test introduira RSpec)

5. Construisez l'image Docker

La création d'image consiste à installer diverses bibliothèques et intergiciels dépendants, et à installer et définir votre propre application.

Exécuter la commande

$ docker-compose build

6. Modifier database.yml

Correction de la partie pertinente de database.yml ''. Correction de la partie concernée selon les paramètres de services '' et MYSQL_ROOT_PASSWORD '' dans docker-compose.yml``.

config/database.yml


# ~réduction~

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password  # ->Corrigez le vide en mot de passe
  host: db  # ->Correction de localhost à db

# ~réduction~

7. Créer une base de données (db: create)

Exécutez la commande pour créer une base de données

$ docker-compose run web rails db:create

8. Démarrez le conteneur

Enfin exécutez la commande pour démarrer le conteneur

$ docker-compose up

Cela peut prendre un certain temps, mais ce n'est pas grave si un tel journal circule dans le terminal

web_1  | => Booting Puma
web_1  | => Rails 6.0.3.4 application starting in development 
web_1  | => Run `rails server --help` for more startup options
web_1  | Puma starting in single mode...
web_1  | * Version 4.3.6 (ruby 2.7.2-p137), codename: Mysterious Traveller
web_1  | * Min threads: 5, max threads: 5
web_1  | * Environment: development
web_1  | * Listening on tcp://0.0.0.0:3000
web_1  | Use Ctrl-C to stop

Lorsque j'accède à `` localhost: 3000 '', la page s'affiche en toute sécurité. Devrait être! !!

finalement

J'ai réussi à créer un environnement! À l'avenir, j'aimerais en savoir plus sur les infrastructures telles que Docker et approfondir ma compréhension!

Matériel de référence

J'ai été très utile!

Merci beaucoup! !!

Recommended Posts

[Docker] Construction de l'environnement de développement Rails6 / Ruby2.7 / MySQL8
[Construction de l'environnement avec Docker] Rails 6 et MySQL 8
Créez un environnement de développement d'applications Rails avec Docker [Docker, Rails, Puma, Nginx, MySQL]
Construction de l'environnement de développement Rails6 [Mac]
Ingénieur Rails Environnement Construction Ruby2.7.1
Construction de l'environnement des rails Rails5.2.1 ruby2.5.1 Catalina
Création d'un environnement de développement pour Ruby on Rails à l'aide de Docker + VSCode (Remote Container)
[Docker] Construction de l'environnement Rails 5.2 avec docker
[Rails / MySQL] Construction de l'environnement Mac
Mémo de construction de l'environnement Ruby on Rails 6.0
Rails sur la procédure de construction de l'environnement Docker
Construction d'environnement de rails avec Docker (apocalypse personnelle)
Construction de l'environnement de développement Laravel avec Docker (Mac)
Sapper × Go (écho) × Construction de l'environnement de développement Docker
Construire un environnement Rails 6 + MySQL avec Docker compose
Construction de l'environnement de développement Java Spring Boot + Docker
Construire un environnement pour Laravel + MySQL + phpMyadmin avec Docker
Rails & React & Webpacker & Manuel de construction de l'environnement MySQL
Muscle Ruby on Rails Jour 1 ~ Construction de l'environnement ~
Construction de l'environnement CentOS8.2 (x86_64) + ruby2.5 + Rails5.2 + MariaDB (10.3.17)
Procédure de création d'un environnement de développement d'applications Rails avec Docker [Rails, MySQL, Docker]
Procédure de construction de l'environnement Docker "Rails 6 x MySQL 8" à partager avec les équipes
construction d'environnement de développement Java
[Rails] Développement avec MySQL
Créer un environnement de développement pour Docker + Rails6 + Postgresql
[Note personnelle] Construction de l'environnement Ruby on Rails (Windows)
Procédure de construction et de développement de l'environnement local Wordpress avec Docker
[Construction de l'environnement] Rails + MySQL + Docker (les débutants peuvent également l'utiliser en 30 minutes!)
[Construction de l'environnement Rails & Docker & MySQL] J'ai démarré le conteneur, mais je ne trouve pas MySQL ...?
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 6.x)
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 5.x)
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Ubuntu)
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Mac)
Environnement de développement WSL2 + VSCode + Docker
[Première construction d'environnement] J'ai essayé de créer un environnement Rails6 + MySQL8.0 + Docker sur Windows 10.
Créer un environnement de développement Ruby on Rails sur AWS Cloud9
Manuel de construction de l'environnement de développement stable pour "Rails6" avec "Docker-compose"
Procédure pour introduire Docker dans l'environnement de développement des applications Rails existantes [Rails, MySQL, Docker]
Rails5 + MySQL8.0 + Construction d'environnement de volumes de premier niveau avec docker-compose
Déployer sur Ruby on Rails Elastic beanstalk (Construction de l'environnement)
Présentez Docker à l'environnement de développement et à l'environnement de test des applications Rails et MySQL existantes
Mémo de construction de l'environnement Redmine (Docker)
[Construction de l'environnement Mac] Ruby on Rails (+ Webpacker gère les erreurs)
Construction d'environnement hors ligne Édition Ruby
Construction de l'environnement Docker × Spring Boot
[Super facile] Construction de l'environnement Ruby
Environnement Build Rails (API) x MySQL x Nuxt.js avec Docker
[Ruby on Rails] De la construction de MySQL au changement de base de données
[Docker] postgres, construction de l'environnement pgadmin4