Configurar el entorno de desarrollo de Ruby on Rails con Docker y Docker Compose en Ubuntu

Instalación de Docker

Docker es un proyecto de código abierto que proporciona una plataforma abierta para desarrolladores y administradores de sistemas para crear, empaquetar y ejecutar aplicaciones en cualquier lugar como un contenedor ligero. Docker automatiza la implementación de aplicaciones dentro de contenedores de software.

Ruby on Rails (RoR) es un marco de aplicación web de código abierto, publicado bajo la licencia MIT. Es un marco de aplicación web del lado del servidor que sigue el concepto MVC (Model-View-Controller).

En este tutorial, le mostraré cómo configurar un entorno de desarrollo para aplicaciones Ruby on Rails utilizando Docker y Docker compose. Usaremos Ubuntu 18.04 como sistema operativo host y usaremos la base de datos PostgreSQL para nuestro proyecto Rails.

Lo que haremos:

  1. Instalar Docker y Docker Compose
  2. Generar el proyecto Rails
  3. Configurar el proyecto Rails
  4. Crear secuencia de comandos de redacción de Docker
  5. Construya el proyecto
  6. Pruebe Crear CRUD básico en Rails

Paso 1: instale Docker y Docker Compose

El primer paso que debemos hacer es instalar el docker y docker compose. Instalaremos la ventana acoplable desde el repositorio oficial de la ventana acoplable e instalaremos el docker-compose desde el proyecto oficial de la ventana acoplable GitHub.

Antes de instalar los paquetes de Docker, ejecute el siguiente comando apt para instalar las dependencias de los paquetes.

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

Ahora agregue la clave de la ventana acoplable y el repositorio de la ventana acoplable.

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"

El comando actualizará automáticamente todos los repositorios en el sistema. Cuando esté completo, instale los paquetes docker-ce.

sudo apt install -y docker-ce

Espere la instalación de docker-ce y luego inicie el servicio docker y agréguelo al tiempo de arranque.

sudo systemctl start docker
sudo systemctl enable docker

Docker está funcionando en el sistema.

A continuación, instale docker-compose descargando el archivo binario directamente desde el repositorio docker GitHub.

Descargue el archivo binario docker-compose en el directorio ‘/usr/local/bin/’ y conviértalo en un ejecutable.

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 y docker-compose se han instalado en el sistema, verifique la versión usando los comandos a continuación.

docker version
docker-compose version

A continuación se muestra el resultado.

Instalación de Docker

Paso 2: generar el proyecto Ruby on Rails

Después de instalar los paquetes principales docker y docker-compose en el sistema, queremos crear un nuevo usuario y luego generar el proyecto Rails usando las imágenes de docker.

Agregue un usuario llamado ‘hakase’ y proporcione una contraseña al usuario.

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

Agregue el usuario al grupo ‘sudo’ y ‘docker’ e inicie sesión en el shell de usuario ‘hakase’.

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

Ahora el usuario ‘hakase’ puede ejecutar y ejecutar el comando docker.

A continuación, crearemos un nuevo directorio ‘rails’ para nuestro proyecto Ruby on Rails.

Cree el directorio ‘rieles’ y vaya a él.

mkdir -p ~/rails
cd ~/rails/

Ahora ejecute el comando ‘docker run’ a continuación.

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

El comando ejecutará el contenedor temporal basado en ruby:alpine image, montará el directorio local en el directorio ‘/usr/src’ dentro del contenedor y luego ejecutará el comando de shell ‘sh’ e irá al directorio ‘app’.

Generar proyecto Ruby on Rails

Dentro del contenedor, instale los paquetes ‘build-base’.

apk add build-base

Ahora instale Ruby on Rails dentro del contenedor temporal.

gem install -N rails

Y genere el nuevo proyecto Rails llamado ‘aplicación’ con PostgreSQL como base de datos, luego salga/cierre sesión del contenedor.

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

Y estará en el directorio del proyecto Rails ‘aplicación’.

Ahora cambie el propietario del directorio del proyecto ‘aplicación’ al usuario ‘hakase’.

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

Y el proyecto Ruby on Rails se ha generado a través del contenedor docker temporal.

Proyecto de rieles

Paso 3: configure el proyecto Rails

En este paso, crearemos un nuevo Dockerfile para nuestras aplicaciones Rails.

Dentro del directorio ‘rieles’, cree un nuevo Dockerfile usando vim.

vim Dockerfile

Pegue la configuración a continuación.

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

Guardar y salir.Publicidad

Estamos creando una nueva imagen acoplable basada en Ruby Alpine Linux. Estamos instalando nuevos paquetes para la instalación de Rails, creamos un nuevo directorio /app, copiamos Gemfile y Gemfile.lock del directorio local de la aplicación e instalamos todos los paquetes basados ​​en Gemfile.

A continuación, vaya al directorio ‘aplicación’, cree un nuevo archivo Gemfile.lock.

cd app/
touch Gemfile.lock

Edite el archivo ‘database.yml’.

vim config/database.yml

Cambie la configuración de la base de datos predeterminada y cambie los detalles como se muestra a continuación.

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

Guardar y Salir.

Configurar el proyecto Rails

La configuración del proyecto Rails se ha completado.

Paso 4: crear un archivo de redacción de Docker

En este paso, crearemos un nuevo archivo docker-compose para nuestra aplicación Rails. Solo crearemos dos servicios de base de datos de base de datos PostgreSQL y web es la aplicación Rails en sí.

Cree un nuevo archivo ‘docker-compose.yml’ dentro del directorio ‘rails’.

vim docker-compose.yml

Y pegue la configuración a continuación.

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

Guardar y Salir.

Crear archivo de redacción de Docker

Ahora cree el directorio ‘postgresql’ dentro del proyecto ‘rails’.

mkdir -p ~/rails/postgresql

Y estamos listos para construir nuestro proyecto Rails.

Paso 5 – Construir el proyecto

Cree la imagen de la ventana acoplable Rails con el comando docker-compose a continuación.

docker-compose build

El comando descargará la imagen de Ruby Alpine Linux y creará la imagen personalizada según sea necesario en función de nuestro Dockerfile.

Construir el proyecto

Genere la base de datos PostgreSQL para el proyecto.

docker-compose run web rake db:create

Ejecución de redacción de Docker

Ahora active los servicios ‘db’ y ‘web’.

docker-compose up -d

Y los servicios de Rails están en funcionamiento, verifíquelo con el comando docker-compose a continuación.

docker-compose ps

Puede ver que el servicio ‘web’ se está ejecutando en el puerto ’80’ en el host.

Ahora verifique las imágenes de la ventana acoplable en nuestro sistema.

docker-compose images

Y obtendrá el resultado de la siguiente manera.

Docker componer imágenes

Ahora abra su navegador web y escriba la dirección IP del servidor o el nombre de dominio. El mio es:

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

Y obtendrá la aplicación de página de Rails predeterminada.

Rails se está ejecutando correctamente

Ahora estamos listos para desarrollar nuestro proyecto Rails.

Paso 6: prueba Crear CRUD básico en Rails

Genere CRUD simple sobre rieles ejecutando el comando de rieles dentro del servicio de contenedor ‘web’.

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

Ahora genera la base de datos.

docker-compose exec web rake db:migrate

Pruebe Crear CRUD básico en Rails

Ahora abra su navegador web y escriba la dirección IP del servidor en la barra de direcciones con la ruta ‘/ publicaciones’. El mio es:

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

Y obtendrá la página CRUD simple como se muestra a continuación.

Formulario POST de prueba

Escriba la publicación y haga clic en el botón ‘Crear publicación’.

Y obtendrá el resultado de la siguiente manera.

La aplicación Rails funciona correctamente

La configuración del entorno de desarrollo para Ruby on Rails con Docker y Docker Compose se completó correctamente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *