Présentez Docker à l'environnement de développement et à l'environnement de test des applications Rails et MySQL existantes

introduction

Comme le titre l'indique, Docker sera installé dans l'environnement de développement d'applications Rails et MySQL existant. Il permet également d'exécuter les tests rspec dans Docker. Il y a déjà beaucoup d'articles similaires, mais j'ai rencontré pas mal d'erreurs, je vais donc résumer mon travail. Je vous serais reconnaissant si vous pouviez me faire savoir s'il y a des erreurs.

environnement

Si la version Rails est 6 et la version MySQL est 8, cette méthode ne fonctionnera pas.

procédure

  1. Créez Dockerfile
  2. Créez docker-compose.yml
  3. Modifiez le database.yml existant
  4. Démarrez

1. Créez Dockerfile

Créez un nouveau Dockerfile dans le répertoire de projet existant.

organisation des fichiers


 test_app#Projet existant
├── Abréviation
    ├── Dockerfile #Créer
    ├── docker-compose.yml #Créer
    ├── Gemfile
    ├── Gemfile.lock
    ├── .env #utilisation
    ├── config
         └──database.yml #Changement

Je décrirai le contenu. Veuillez faire correspondre test_app ci-dessous à chaque nom d'application.

Dockerfile


FROM ruby:2.6.5

RUN apt-get update \
    && apt-get install -y --no-install-recommends nodejs mariadb-client build-essential \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

WORKDIR /test_app

COPY Gemfile /test_app/Gemfile
COPY Gemfile.lock /test_app/Gemfile.lock

RUN gem install bundler
RUN bundle install
COPY . /test_app

2. Créez docker-compose.yml

docker-compose.yml


version: '3'

services:
  db:
    image: mysql:5.7
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    ports: 
      - '3306:3306'
    environment:
      MYSQL_DATABASE: today_code_development
      MYSQL_ROOT_PASSWORD: ${DATABASE_DEV_PASSWORD}
      MYSQL_USER: ${DATABASE_DEV_USER}
      MYSQL_PASSWORD: ${DATABASE_DEV_PASSWORD}
    volumes:
      - mysql-data:/var/lib/mysql

  test-db:
    image: mysql:5.7
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    environment:
      MYSQL_DATABASE: today_code_test
      MYSQL_ROOT_PASSWORD: ${DATABASE_DEV_PASSWORD}
      MYSQL_USER: ${DATABASE_DEV_USER}
      MYSQL_PASSWORD: ${DATABASE_DEV_PASSWORD}
    ports:
      - '3307:3306'

  web:
    build:
      context: .
      dockerfile: Dockerfile
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    tty: true 
    stdin_open: true
    depends_on:
      - db
      - test-db
    ports:
      - "3000:3000" 
    volumes:
      - .:/today_code
      - bundle:/usr/local/bundle

volumes:
  mysql-data:
  bundle:

Écrivez seulement les points.

.env


DATABASE_DEV_USER = 'hoge'
DATABASE_DEV_PASSWORD = 'password'

3. Modifiez database.yml

database.yml


default: &default
  adapter: mysql2
  encoding: utf8
  charset: utf8
  pool: 5
  port: 3306

development:
  <<: *default
  database: test_app_development
  username: <%= ENV['DATABASE_DEV_USER'] %>
  password: <%= ENV['DATABASE_DEV_PASSWORD'] %>
  host : db

test:
  <<: *default
  database: test_app_test
  username: <%= ENV['DATABASE_DEV_USER'] %>
  password: <%= ENV['DATABASE_DEV_PASSWORD'] %>
  host : test-db

production:
  <<: *default
  database: <%= ENV['DB_NAME'] %>
  username: <%= ENV['DB_USERNAME'] %>
  password: <%= ENV['DB_PASSWORD'] %>
  host: <%= ENV['DB_HOSTNAME'] %>

--username et password sont les mêmes que docker-compose. --Il est configuré pour se connecter au conteneur de base de données créé par l'hôte. ――Veuillez ajuster la production à chaque environnement

4. Démarrez

Si vous pouvez démarrer docker à la fin, il réussit.

  1. Créez une image avec docker-compose build
  2. Lancez le conteneur avec docker-compose up -d. -d est une option pour démarrer en arrière-plan.
  3. Créez une base de données avec docker-compose run web rails db: create

S'il est affiché sur http: // localhost: 3000 /, il réussit. Tout ce que vous avez à faire est db: migrate ou db: seed et vous avez terminé.

Article de référence

J'ai essayé de créer un environnement de développement de projet Rails existant à l'aide de Docker (Rails + Mysql) Comment exécuter une application Rails existante dans un conteneur Docker + visualisation de conteneur DB avec sequence pro Créer une base de données de test dans l'environnement Rails x Docker Persistez les données Docker! Introduction à la construction de l'environnement à partir de la compréhension du volume de données

Recommended Posts

Présentez Docker à l'environnement de développement et à l'environnement de test des applications Rails et MySQL existantes
Procédure pour introduire Docker dans l'environnement de développement des applications Rails existantes [Rails, MySQL, Docker]
Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]
Méthode de construction de l'environnement et dépanneur au moment du développement conjoint (rails, docker et github)
[Explication approximative] Comment séparer le fonctionnement de l'environnement de production et de l'environnement de développement avec Rails
[Docker] Construction de l'environnement de développement Rails6 / Ruby2.7 / MySQL8
[Docker] Comment sauvegarder et restaurer les données de base de données de l'application Rails sur docker-compose [MySQL]
[Circle CI] J'étais accro au test automatique de Circle CI (rails + mysql) [Memo]
Améliorer les performances de l'environnement de développement Docker
Exécutez l'environnement Docker Rails MySQL sur Heroku. concevoir et cacher l'API Twitter
Rails6 J'ai essayé d'introduire Docker dans une application existante
SSL dans l'environnement local de Docker / Rails / puma
[Rails] [Docker] Le copier-coller est OK! Comment créer un environnement de développement Rails avec Docker
Pour ceux qui souhaitent utiliser MySQL pour la base de données dans la construction de l'environnement de Rails6 ~.
Que faire lorsque «Impossible de trouver» dans l’une des sources apparaît dans l’environnement de développement avec Docker × Rails × RSpec
Créez un environnement de développement d'applications Rails avec Docker [Docker, Rails, Puma, Nginx, MySQL]
J'ai essayé de créer un environnement de WSL2 + Docker + VSCode
[Rails 6.0, Docker] J'ai essayé de résumer la construction de l'environnement Docker et les commandes nécessaires pour créer un portfolio
[Construction de l'environnement avec Docker] Rails 6 et MySQL 8
[Rails] Comment obtenir l'URL de la source de transition et la rediriger
J'ai essayé de créer un environnement de serveur UML Plant avec Docker
Le super débutant construit Rails 6 + environnement Postgresql avec Docker jusqu'à la fin
Procédure de création d'un environnement de développement d'applications Rails avec Docker [Rails, MySQL, Docker]
[Rails] Comment introduire le kaminari avec Slim et changer le design
[Rails / Heroku / MySQL] Comment réinitialiser la base de données de l'application Rails sur Heroku
[Rails] Lire le RSS du site et renvoyer le contenu au premier plan
Comment créer un environnement Rails + Vue + MySQL avec Docker [dernière version 2020/09]
Procédure de migration de l'environnement de développement d'applications Rails vers Docker même si vous êtes inexpérimenté (Rails5 + MySQL8.0 + docker-compose)
Construction de Rails 6 et environnement PostgreSQL avec Docker
Construire un environnement Rails 6 + MySQL avec Docker compose
Déployer sur heroku avec Docker (Rails 6, MySQL)
J'ai essayé de résumer les points clés de la conception et du développement de gRPC
Comment exécuter avec des commandes de langage de développement normales dans l'environnement de développement Docker
[Construction de l'environnement Rails & Docker & MySQL] J'ai démarré le conteneur, mais je ne trouve pas MySQL ...?
[Docker] Comment créer un environnement virtuel pour les applications Rails et Nuxt.js
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 6.x)
Comment résoudre la construction de l'environnement local de Ruby on Rails (MAC)!
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 5.x)
[Rails] Articles pour les débutants pour organiser et comprendre le flux de form_with
J'ai essayé de migrer le portfolio créé sur Vagrant vers l'environnement de développement de Docker
Après tout, je voulais prévisualiser le contenu de mysql avec Docker ...
Comment créer un environnement Rails 6 avec Docker
[Première construction d'environnement] J'ai essayé de créer un environnement Rails6 + MySQL8.0 + Docker sur Windows 10.
[Rails5.2] Prise en charge des pictogrammes de Mysql 5.7 dans Docker (changez le code de caractère en utf8mb4)
Comment créer un environnement [TypeScript + Vue + Express + MySQL] avec Docker ~ Vue ~
À propos du cas où "Docker" freeter a tenté de mettre Docker dans l'application Rails existante
Créer un environnement de développement pour Docker + Rails6 + Postgresql