Création d'un environnement de développement pour Ruby on Rails à l'aide de Docker + VSCode (Remote Container)

introduction

En raison de diverses circonstances, j'ai décidé de développer une application Web, j'ai donc créé un environnement de développement pour Ruby on Rails en utilisant Docker et VSCode. Je voudrais garder ce dossier sous forme de mémorandum. À propos, si vous le construisez par cette méthode, il est essentiellement complété dans VS Code. Vous n'êtes pas obligé de taper docker-compose up et docker-compose run web rails db: create dans chaque terminal, vous pouvez faire rails db: create sur le terminal VS Code.

Conteneur distant VSCode (développement)

Cette fois, nous utiliserons Remote Container, qui est une extension de VS Code. Si vous utilisez ce conteneur distant, vous pouvez accéder à l'environnement du conteneur lancé par Docker avec VS Code, et modifier et déboguer le fichier programme dans le conteneur sur VS Code. À propos, il existe une extension similaire appelée Développement à distance, mais il semble que ce sera un pack d'extension qui comprend également des fonctions SSH et WSL autres que le conteneur Docker. Par conséquent, le développement à distance inclut le conteneur distant, le SSH distant et le WSL distant, et je pense que c'est le conteneur distant qui est lié à Docker.

procédure

Installation de diverses extensions VS Code

Installation du conteneur distant (développement)

J'ai quand même installé Remote Development. Recherchez Développement à distance (conteneur) à partir des extensions de code VS et installez-le.

Remote Development.png

Installation de l'extension de débogage Ruby

De même, recherchez ruby et installez-le.

image.png

Préparation d'un répertoire de travail pour Ruby on Rails

Créer un répertoire de travail

Ensuite, préparez un répertoire de travail pour mettre le code Ruby on Rails. Tout d'abord, créez un répertoire de travail à n'importe quel emplacement.

mkdir path/to/{name}
cd path/to/{name}

Créer un fichier Docker

Ensuite, créez un DockerFile. Entrez le nom du répertoire de travail dans «{nom}».

vi DockerFile

DockerFile


# Pull ruby image
FROM ruby:2.5.3

# Install 
RUN apt-get update -qq && \
    apt-get install -y build-essential \ 
                       libpq-dev \        
                       nodejs           

# Create working directory
ENV APP_ROOT /{name}
RUN mkdir $APP_ROOT

# Set working directory as APP_ROOT
WORKDIR $APP_ROOT

# Add Gemfile
ADD ./Gemfile $APP_ROOT/Gemfile
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock

# Install Gemfile's bundle
RUN bundle install
ADD . $APP_ROOT

Création de Gemfile et Gemfile.lock

Gemfile.lock est vide et OK.

touch Gemfile.lock
vi Gemfile

Gemfile


source 'https://rubygems.org'
gem 'rails', '5.2.2'

Création de docker-compose.yml

{password} est un mot de passe arbitraire pour accéder à la base de données, et {name} est le nom du répertoire de travail ci-dessus. Notez que les paramètres de transfert de port sont attribués du port local 4306 au port DB 3306. C'est parce que le port par défaut de DB est 3306, nous essayons donc d'éviter les conflits lorsque ce port est déjà utilisé du côté local.

vi docker-compose.yml

docker-compose.yml


version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: {password}
      MYSQL_DATABASE: root
    ports:
      - "4306:3306"

  web:
    build: .
    command: /bin/sh #-c "rm -f tmp/pids/server.pid"
    stdin_open: true
    tty: true
    depends_on:
      - db
    volumes:
      - .:/{name}
    ports:
      - "3000:3000"

Paramètres du conteneur distant

Ouvrez le répertoire de travail créé précédemment avec VSCode (le répertoire contenant DockerFile et docker-compose.yml).

Créer / modifier un fichier de paramètres

Cliquez sur l'icône en bas à gauche et sélectionnez ʻAjouter des fichiers de configuration du conteneur de développement> Depuis docker-compose.yml> web`. image.png

Ensuite, le répertoire .devcontainer est créé, donc éditez devcontainer.json. En guise de mise en garde --Le ** docker-compose.yml créé dans le répertoire .devcontainer n'est pas utilisé **. (Vous pouvez le supprimer) --{nom}spécifie le nom du répertoire de travail. --ʻExtensions spécifie l'ID de la fonction d'extension pour le débogage. --ʻAddPort est utilisé pour définir la redirection de port. (Si vous souhaitez créer un lien avec Gmail avec Devise, ajoutez «" 587: 587 "» ici.)

json-doc:.devcontainer/devcontainer.json


// If you want to run as a non-root user in the container, see .devcontainer/docker-compose.yml.
{
	"name": "Existing Docker Compose (Extend)",

	// Update the 'dockerComposeFile' list if you have more compose files or use different names.
	// The .devcontainer/docker-compose.yml file contains any overrides you need/want to make.
	"dockerComposeFile": [
		"../docker-compose.yml",
		//"docker-compose.yml"
	],

	// The 'service' property is the name of the service for the container that VS Code should
	// use. Update this value and .devcontainer/docker-compose.yml to the real service name.
	"service": "web",

	// The optional 'workspaceFolder' property is the path VS Code should open by default when
	// connected. This is typically a file mount in .devcontainer/docker-compose.yml
	"workspaceFolder": "/{name}",

	// Add the IDs of extensions you want installed when the container is created.
	"extensions": ["rebornix.ruby"],

	// Use 'forwardPorts' to make a list of ports inside the container available locally.
	// "forwardPorts": [],
	"addPort": ["3000:3000", "4306:3306"]

}

Préparation du projet Rails

Conteneur ouvert

Cliquez sur l'icône en bas à gauche et cliquez sur «Rouvrir dans le conteneur» pour commencer à créer diverses images et conteneurs Docker.

docker stop $(docker ps -q)
docker rm $(docker ps -aq)
docker rmi $(docker images -q)

Créer un projet Rails

Lorsque la construction est terminée, dans l'onglet Terminal, appuyez sur la touche + pour ouvrir Bash.

image.png

Tapez ensuite la commande suivante pour créer un projet Rails.

rails new . --force --database=mysql --skip-bundle

Paramètres de base de données

Définissez le DB. Pour {password}, spécifiez le mot de passe DB défini dans docker-compose.yml.

vi config/database.yml

config/database.yml


default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: {password} # MYSQL_ROOT_PASSWORD in docker-compose.yml
  host: db # service name in docker-compose.yml

Création de DB

Créez un DB avec la commande suivante.

bundle update
rails db:create

Démarrez le serveur

Après cela, démarrez le serveur avec la commande suivante, accédez à [http: // localhost: 3000 /](http: // localhost: 3000 /), et lorsque l'écran d'exemple apparaît, vous avez terminé!

rails s -b 0.0.0.0 -p 3000

image.png

prime

Sequel Pro Sequel Pro, qui est une interface graphique de visualisation de base de données, est également redirigé vers le port, il peut donc être utilisé. Vous pouvez y accéder en spécifiant le nom d'utilisateur, le mot de passe et le port spécifiés dans [Create docker-compose.yml](Create # docker-compose.yml). Notez que Host doit être «127.0.0.1» au lieu de «localhost».

image.png

Ensuite, sélectionnez «{name} _development» dans «Choose Database» pour ouvrir la base de données de l'environnement de développement.

image.png

déboguer

Modification de launch.json

Si vous voulez déboguer avec VSCode, cliquez sur Exécuter> Ajouter une configuration> Docker ~ (probablement pour Container) et launch.json s'ouvrira. Remplissez ensuite comme suit.

launch.json


{
  "version": "0.2.0",
  "configurations": [
    {
    "name": "Rails App",
    "type": "Ruby",
    "request": "launch",
    "cwd": "${workspaceRoot}", 
    "program": "bin/rails",
    "args": ["s", "-b", "0.0.0.0", "-p", "3000"], 
    }
  ]
}

Lancer le débogage

Vous pouvez redémarrer, reconstruire l'image et déboguer avec F5!

Erreur

Un serveur est déjà en cours d'exécution. Vérifiez / app / tmp / pids / server.pid. apparaît

rm -f tmp/pids/server.pid

référence

Recommended Posts

Création d'un environnement de développement pour Ruby on Rails à l'aide de Docker + VSCode (Remote Container)
[Docker] Construction de l'environnement de développement Rails6 / Ruby2.7 / MySQL8
[Docker] Construction de l'environnement Rails 5.2 avec docker
Créer un environnement de débogage sur un conteneur - Créer un environnement de développement local pour les didacticiels Rails avec Docker -
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)
Mémo de construction de l'environnement Ruby on Rails 6.0
Rails sur la procédure de construction de l'environnement Docker
[Construction de l'environnement avec Docker] Rails 6 et MySQL 8
[Procédure 1 pour les débutants] Ruby on Rails: Construction d'un environnement de développement
Créez un environnement de développement d'applications Rails avec Docker [Docker, Rails, Puma, Nginx, MySQL]
Construction d'environnement de rails avec Docker (apocalypse personnelle)
Construction de l'environnement de développement Laravel avec Docker (Mac)
Muscle Ruby on Rails Jour 1 ~ Construction de l'environnement ~
Créer un environnement de développement Go avec WSL2 + Docker Desktop + VSCode (Remote --Containers)
Ruby on Rails - De la construction d'environnement au développement d'application simple sur WSL2
Étapes pour créer un environnement de développement Ruby on Rails avec Vagrant
Construction de l'environnement Rails Docker
Présentation de Rspec avec Ruby on Rails x Docker
[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 de développement Rails6 [Mac]
Environnement de développement WSL2 + VSCode + Docker
Ingénieur Rails Environnement Construction Ruby2.7.1
Créer un environnement de développement Ruby on Rails sur AWS Cloud9
Construction de l'environnement des rails Rails5.2.1 ruby2.5.1 Catalina
Manuel de construction de l'environnement de développement stable pour "Rails6" avec "Docker-compose"
Déployer sur Ruby on Rails Elastic beanstalk (Construction de l'environnement)
[Construction de l'environnement Mac] Ruby on Rails (+ Webpacker gère les erreurs)
Créez un environnement de développement pour créer des applications Ruby on Jets + React avec Docker
Créer un environnement de développement Chisel avec Windows10 + WSL2 + VScode + Docker
J'ai créé un environnement de développement avec rails6 + docker + postgreSQL + Materialise.
[Construction de l'environnement de développement Java] Installez OpenJDK 11 (Java 11) sur macOS avec Homebrew
Créer un environnement Node.js avec Docker Compose
Construction d'environnement avec Docker pour les débutants
Créer un environnement de développement Unity sur docker
Procédure de création d'un environnement de développement d'applications Rails avec Docker [Rails, MySQL, Docker]
Comment installer Pry après avoir créé un environnement de développement Rails avec Docker
Créez un environnement de développement où les points d'arrêt de Ruby on Rails fonctionnent sous Windows
Construire un environnement PostgreSQL avec Docker (de la configuration à juste avant le développement)
Procédure de construction de l'environnement Docker "Rails 6 x MySQL 8" à partager avec les équipes
Construction de l'environnement GPU avec Docker [version d'octobre 2020]