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 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:
- Instalar Docker y Docker Compose
- Generar el proyecto Rails
- Configurar el proyecto Rails
- Crear secuencia de comandos de redacción de Docker
- Construya el proyecto
- 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.
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’.
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: 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.
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.
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.
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 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.
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.
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
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.
Escriba la publicación y haga clic en el botón ‘Crear publicación’.
Y obtendrá el resultado de la siguiente manera.
La configuración del entorno de desarrollo para Ruby on Rails con Docker y Docker Compose se completó correctamente.