GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Configurer l'environnement de développement Ruby on Rails avec Docker et Docker Compose sur Ubuntu

Docker est un projet open source qui fournit une plate-forme ouverte aux développeurs et aux administrateurs système pour créer, empaqueter et exécuter des applications n'importe où en tant que conteneur léger. Docker automatise le déploiement d'applications dans des conteneurs de logiciels.

Ruby on Rails (RoR) est un framework d'application Web open source, publié sous la licence MIT. Il s'agit d'un framework d'application Web côté serveur qui suit le concept MVC (Model-View-Controller).

Dans ce didacticiel, je vais vous montrer comment configurer un environnement de développement pour les applications Ruby on Rails à l'aide de Docker et de Docker compose. Nous utiliserons Ubuntu 18.04 comme système d'exploitation hôte et utiliserons la base de données PostgreSQL pour notre projet Rails.

Ce que nous allons faire :

  1. Installer Docker et Docker Compose
  2. Générer le projet Rails
  3. Configurer le projet Rails
  4. Créer un script de composition Docker
  5. Créer le projet
  6. Tester la création d'un CRUD de base sur des rails

Étape 1 - Installer Docker et Docker Compose

La première étape que nous devons faire est d'installer le docker et le docker se compose. Nous allons installer le docker à partir du référentiel officiel de docker et installer le docker-compose à partir du projet officiel de docker GitHub.

Avant d'installer les packages Docker, exécutez la commande apt ci-dessous pour installer les dépendances des packages.

sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

Ajoutez maintenant la clé Docker et le référentiel Docker.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

La commande mettra automatiquement à jour tous les référentiels du système. Une fois terminé, installez les packages docker-ce.

sudo apt install -y docker-ce

Attendez l'installation de docker-ce, puis démarrez le service docker et ajoutez-le au démarrage.

sudo systemctl start docker
sudo systemctl enable docker

Le Docker est opérationnel sur le système.

Ensuite, installez le docker-compose en téléchargeant le fichier binaire directement depuis le dépôt docker GitHub.

Téléchargez le fichier binaire docker-compose dans le répertoire '/usr/local/bin/' et faites-en un exécutable.

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Docker et docker-compose ont été installés sur le système, vérifiez la version à l'aide des commandes ci-dessous.

docker version
docker-compose version

Ci-dessous le résultat.

Étape 2 - Générer le projet Ruby on Rails

Après avoir installé les packages de base docker et docker-compose sur le système, nous souhaitons créer un nouvel utilisateur, puis générer le projet Rails à l'aide des images docker.

Ajoutez un utilisateur nommé 'hakase' et donnez-lui un mot de passe.

useradd -m -s /bin/bash hakase
passwd hakase

Ajoutez l'utilisateur au groupe 'sudo' et 'docker' et connectez-vous au shell utilisateur 'hakase'.

usermod -a -G sudo hakase
usermod -a -G docker hakase
su - hakase

Maintenant, l'utilisateur 'hakase' peut exécuter et lancer la commande docker.

Ensuite, nous allons créer un nouveau répertoire "rails" pour notre projet Ruby on Rails.

Créez le répertoire 'rails' et allez-y.

mkdir -p ~/rails
cd ~/rails/

Exécutez maintenant la commande 'docker run' ci-dessous.

docker run --rm -v ${PWD}:/usr/src -w /usr/src -ti ruby:alpine sh ; cd app

La commande exécutera le conteneur temporaire basé sur l'image ruby:alpine, montera le répertoire local dans le répertoire '/usr/src' à l'intérieur du conteneur, puis exécutera la commande shell 'sh' et accédera au répertoire 'app'.

À l'intérieur du conteneur, installez les packages 'build-base'.

apk add build-base

Installez maintenant le Ruby on Rails à l'intérieur du conteneur temporaire.

gem install -N rails

Et générez le nouveau projet Rails nommé 'app' avec PostgreSQL comme base de données, puis quittez/déconnectez-vous du conteneur.

rails new app --database=postgresql --skip-bundle
exit

Et vous serez sur le répertoire du projet Rails 'app'.

Remplacez maintenant le propriétaire du répertoire de projet 'app' par l'utilisateur 'hakase'.

sudo chown -R hakase:hakase ~/rails/app/
ls -lah

Et le projet Ruby on Rails a été généré via le conteneur docker temporaire.

Étape 3 - Configurer le projet Rails

Dans cette étape, nous allons créer un nouveau Dockerfile pour nos applications Rails.

Dans le répertoire 'rails', créez un nouveau Dockerfile à l'aide de vim.

vim Dockerfile

Collez la configuration ci-dessous.

FROM ruby:alpine

RUN apk update
RUN apk add build-base nodejs postgresql-dev tzdata
RUN gem install -N rails

RUN mkdir -p /app
WORKDIR /app

COPY ./app/Gemfile /app
COPY ./app/Gemfile.lock /app
RUN bundle install --binstubs

Enregistrez et quittez.

Nous créons une nouvelle image docker basée sur le Linux Ruby Alpine. Nous installons de nouveaux packages pour l'installation des rails, créons un nouveau répertoire /app, copions le Gemfile et le Gemfile.lock à partir du répertoire local de l'application, et installons tous les packages basés sur le Gemfile.

Ensuite, allez dans le répertoire 'app', créez un nouveau fichier Gemfile.lock.

cd app/
touch Gemfile.lock

Modifiez le fichier 'database.yml'.

vim config/database.yml

Modifiez la configuration de la base de données par défaut et modifiez les détails comme ci-dessous.

default: &default
   adapter: postgresql
   encoding: unicode
   host: db
   username: postgres
   pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
   timeout: 5000

Enregistrez et quittez.

La configuration du projet Rails est terminée.

Étape 4 - Créer un fichier de composition Docker

Dans cette étape, nous allons créer un nouveau fichier docker-compose pour notre application Rails. Nous ne créerons que deux services db database PostgreSQL et web est l'application rails elle-même.

Créez un nouveau fichier 'docker-compose.yml' dans le répertoire 'rails'.

vim docker-compose.yml

Et collez la configuration ci-dessous.

version: '3.6'

services:

  db:
    image: postgres:alpine
    volumes:
      - ./postgresql:/var/lib/postgresql/data

  web:
    build: .
    volumes:
      - ./app:/app
    working_dir: /app
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    ports:
      - 80:3000
    depends_on:
      - db

Enregistrez et quittez.

Créez maintenant le répertoire 'postgresql' dans le projet 'rails'.

mkdir -p ~/rails/postgresql

Et nous sommes prêts à construire notre projet Rails.

Étape 5 - Construire le projet

Créez l'image du menu fixe Rails à l'aide de la commande docker-compose ci-dessous.

docker-compose build

La commande téléchargera l'image Ruby Alpine Linux et créera l'image personnalisée dont nous avons besoin en fonction de notre Dockerfile.

Générez la base de données PostgreSQL pour le projet.

docker-compose run web rake db:create

Maintenant, ouvrez les services 'db' et 'web'.

docker-compose up -d

Et les services rails sont opérationnels, vérifiez-le à l'aide de la commande docker-compose ci-dessous.

docker-compose ps

Vous pouvez voir que le service 'web' s'exécute sur le port '80' sur l'hôte.

Vérifiez maintenant les images docker sur notre système.

docker-compose images

Et vous obtiendrez le résultat ci-dessous.

Ouvrez maintenant votre navigateur Web et saisissez l'adresse IP ou le nom de domaine du serveur. Le mien est :

http://rails.hakase-labs.io/

Et vous obtiendrez l'application de page Rails par défaut dessus.

Nous sommes maintenant prêts à développer notre projet Rails.

Étape 6 - Tester la création de CRUD de base sur les rails

Générez un CRUD simple sur des rails en exécutant la commande rails dans le service de conteneur 'web'.

docker-compose exec web rails g scaffold Post title:string body:text

Générez maintenant la base de données.

docker-compose exec web rake db:migrate

Ouvrez maintenant votre navigateur Web et tapez l'adresse IP du serveur dans la barre d'adresse avec le chemin '/ posts'. Le mien est :

http://rails.hakase-labs.io/posts

Et vous obtiendrez la page CRUD simple comme ci-dessous.

Tapez le message et cliquez sur le bouton "Créer un message".

Et vous obtiendrez le résultat ci-dessous.

La configuration de l'environnement de développement pour Ruby on Rails avec Docker et Docker Compose s'est terminée avec succès.


Ubuntu
  1. Comment installer Docker Compose sur Ubuntu 18.04

  2. Comment installer Docker Compose sur Ubuntu 20.04

  3. Comment installer et utiliser Docker Compose sur Ubuntu 18.04

  4. Erreurs avec Vagrant et Ubuntu 12.10 avec RVM ?

  5. Configurer un environnement chroot sur Ubuntu avec debootstrap

Comment installer et utiliser Docker Compose sur Ubuntu 20.04

Comment installer et utiliser Docker Compose sur Ubuntu 22.04

Comment installer et configurer Laravel avec Docker Compose sur Ubuntu 22.04

Comment installer et configurer Laravel avec Docker Compose sur Ubuntu 20.04

Comment installer Ruby on Rails sur Ubuntu 20.04 avec RVM

Installer et utiliser Docker Compose avec Docker sur Ubuntu 22.04