GNU/Linux >> Tutoriales Linux >  >> Ubuntu

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

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 de 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.

Qué haremos:

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

Paso 1:instalar Docker y Docker Compose

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

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.

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.

Agrega un usuario llamado 'hakase' y dale una contraseña.

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 acceda a él.

mkdir -p ~/rails
cd ~/rails/

Ahora ejecute el siguiente comando 'docker run'.

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'.

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.

Paso 3:configurar el proyecto Rails

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

Dentro del directorio 'rails', crea 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.

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.

La configuración del proyecto Rails se ha completado.

Paso 4:Crear archivo de composició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 la web es la aplicación de rieles 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.

Ahora cree el directorio 'postgresql' dentro del proyecto 'rails'.

mkdir -p ~/rails/postgresql

Y estamos listos para construir nuestro proyecto Rails.

Paso 5:compilar el proyecto

Cree la imagen de la ventana acoplable Rails con el siguiente comando docker-compose.

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.

Genere la base de datos PostgreSQL para el proyecto.

docker-compose run web rake db:create

Ahora active los servicios 'db' y 'web'.

docker-compose up -d

Y los servicios de Rails están en funcionamiento, verifíquelo usando 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 como se muestra a continuación.

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

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

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

Ahora estamos listos para desarrollar nuestro proyecto Rails.

Paso 6:probar la creación de 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 genere la base de datos.

docker-compose exec web rake db:migrate

Ahora abra su navegador web y escriba la dirección IP del servidor en la barra de direcciones con la ruta '/ publicaciones'. El mío es:

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

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

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

Y obtendrá el resultado como se muestra a continuación.

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


Ubuntu
  1. Cómo instalar Docker Compose en Ubuntu 18.04

  2. Cómo instalar Docker Compose en Ubuntu 20.04

  3. Cómo instalar y usar Docker Compose en Ubuntu 18.04

  4. ¿Errores con Vagrant y Ubuntu 12.10 con Rvm?

  5. Configure un entorno chroot en Ubuntu con debootstrap

Cómo instalar y usar Docker Compose en Ubuntu 20.04

Cómo instalar y usar Docker Compose en Ubuntu 22.04

Cómo instalar y configurar Laravel con Docker Compose en Ubuntu 22.04

Cómo instalar y configurar Laravel con Docker Compose en Ubuntu 20.04

Cómo instalar Ruby on Rails en Ubuntu 20.04 con RVM

Instale y use Docker Compose con Docker en Ubuntu 22.04