GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Configurazione dell'ambiente di sviluppo Ruby on Rails con Docker e Docker Compose su Ubuntu

Docker è un progetto open source che fornisce una piattaforma aperta a sviluppatori e amministratori di sistema per creare, impacchettare ed eseguire applicazioni ovunque come un contenitore leggero. Docker automatizza la distribuzione delle applicazioni all'interno di contenitori software.

Ruby on Rails (RoR) è un framework di applicazioni web open source, pubblicato con licenza MIT. È un framework di applicazioni Web lato server che segue il concetto MVC (Model-View-Controller).

In questo tutorial, ti mostrerò come configurare un ambiente di sviluppo per le applicazioni Ruby on Rails utilizzando Docker e Docker Compose. Utilizzeremo Ubuntu 18.04 come sistema operativo host e utilizzeremo il database PostgreSQL per il nostro progetto Rails.

Cosa faremo:

  1. Installa Docker e Docker Compose
  2. Genera il progetto Rails
  3. Imposta il progetto Rails
  4. Crea script di composizione Docker
  5. Costruisci il progetto
  6. Test Crea CRUD di base su binari

Passaggio 1:installazione di Docker e Docker Compose

Il primo passo che dobbiamo fare è installare la finestra mobile e la finestra mobile si compone da sola. Installeremo il docker dal repository docker ufficiale e installeremo docker-compose dal progetto GitHub docker ufficiale.

Prima di installare i pacchetti Docker, esegui il comando apt di seguito per installare le dipendenze dei pacchetti.

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

Ora aggiungi la chiave mobile e il repository della finestra mobile.

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"

Il comando aggiornerà automaticamente tutti i repository sul sistema. Al termine, installa i pacchetti docker-ce.

sudo apt install -y docker-ce

Attendi l'installazione docker-ce, quindi avvia il servizio docker e aggiungilo all'ora di avvio.

sudo systemctl start docker
sudo systemctl enable docker

Docker è attivo e funzionante sul sistema.

Quindi, installa il docker-compose scaricando il file binario direttamente dal repository GitHub docker.

Scarica il file binario di composizione mobile nella directory '/usr/local/bin/' e rendilo eseguibile.

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

La finestra mobile e la composizione mobile sono state installate sul sistema, controlla la versione usando i comandi seguenti.

docker version
docker-compose version

Di seguito il risultato.

Fase 2 - Genera progetto Ruby on Rails

Dopo aver installato i pacchetti principali docker e docker-compose sul sistema, vogliamo creare un nuovo utente e quindi generare il progetto Rails utilizzando le immagini docker.

Aggiungi un utente chiamato 'hakase' e fornisci all'utente una password.

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

Aggiungi l'utente al gruppo 'sudo' e 'docker' e accedi alla shell utente 'hakase'.

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

Ora l'utente 'hakase' può eseguire ed eseguire il comando docker.

Successivamente, creeremo una nuova directory 'rails' per il nostro progetto Ruby on Rails.

Crea la directory 'rails' e vai ad essa.

mkdir -p ~/rails
cd ~/rails/

Ora esegui il comando 'docker run' di seguito.

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

Il comando eseguirà il contenitore temporaneo basato sull'immagine ruby:alpine, monterà la directory locale nella directory '/usr/src' all'interno del contenitore, quindi eseguirà il comando shell 'sh' e andrà alla directory 'app'.

All'interno del container, installa i pacchetti 'build-base'.

apk add build-base

Ora installa Ruby on Rails all'interno del contenitore temporaneo.

gem install -N rails

E genera il nuovo progetto Rails denominato 'app' con PostgreSQL come database, quindi esci/disconnetti dal contenitore.

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

E sarai nella directory del progetto Rails 'app'.

Ora cambia il proprietario della directory del progetto "app" con l'utente "hakase".

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

E il progetto Ruby on Rails è stato generato tramite il container Docker temporaneo.

Fase 3:imposta il progetto Rails

In questo passaggio creeremo un nuovo Dockerfile per le nostre applicazioni Rails.

All'interno della directory 'rails', crea un nuovo Dockerfile usando vim.

vim Dockerfile

Incolla la configurazione di seguito.

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

Salva ed esci.

Stiamo creando una nuova immagine Docker basata su Linux Ruby Alpine. Stiamo installando nuovi pacchetti per l'installazione dei binari, creiamo una nuova directory /app, copiamo Gemfile e Gemfile.lock dalla directory locale dell'app e installiamo tutti i pacchetti basati su Gemfile.

Quindi, vai alla directory 'app', crea un nuovo file Gemfile.lock.

cd app/
touch Gemfile.lock

Modifica il file 'database.yml'.

vim config/database.yml

Modifica la configurazione predefinita del database e modifica i dettagli come di seguito.

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

Salva ed esci.

La configurazione del progetto Rails è stata completata.

Passaggio 4:crea un file di composizione Docker

In questo passaggio, creeremo un nuovo file di composizione mobile per la nostra applicazione Rails. Creeremo solo due servizi database db PostgreSQL e web è l'applicazione rails stessa.

Crea un nuovo file 'docker-compose.yml' all'interno della directory 'rails'.

vim docker-compose.yml

E incolla la configurazione di seguito.

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

Salva ed esci.

Ora crea la directory 'postgresql' all'interno del progetto 'rails'.

mkdir -p ~/rails/postgresql

E siamo pronti per realizzare il nostro progetto Rails.

Fase 5:crea il progetto

Costruisci l'immagine della finestra mobile Rails usando il comando docker-compose di seguito.

docker-compose build

Il comando scaricherà l'immagine Ruby Alpine Linux e creerà l'immagine personalizzata di cui abbiamo bisogno in base al nostro Dockerfile.

Genera il database PostgreSQL per il progetto.

docker-compose run web rake db:create

Ora attiva i servizi 'db' e 'web'.

docker-compose up -d

E i servizi ferroviari sono attivi e funzionanti, controllalo utilizzando il comando docker-compose di seguito.

docker-compose ps

Puoi vedere che il servizio "web" è in esecuzione sulla porta "80" dell'host.

Ora controlla le immagini della finestra mobile sul nostro sistema.

docker-compose images

E otterrai il risultato come di seguito.

Ora apri il tuo browser web e digita l'indirizzo IP del server o il nome di dominio. Il mio è:

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

E otterrai l'applicazione predefinita della pagina Rails.

Ora siamo pronti per sviluppare il nostro progetto Rails.

Fase 6:prova a creare CRUD di base su binari

Genera semplice CRUD on rails eseguendo il comando rails all'interno del servizio container 'web'.

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

Ora genera il database.

docker-compose exec web rake db:migrate

Ora apri il tuo browser web e digita l'indirizzo IP del server sulla barra degli indirizzi con il percorso '/posts'. Il mio è:

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

E otterrai la semplice pagina CRUD come di seguito.

Digita il post e fai clic sul pulsante "Crea post".

E otterrai il risultato come di seguito.

La configurazione dell'ambiente di sviluppo per Ruby on Rails con Docker e Docker Compose è stata completata con successo.


Ubuntu
  1. Come installare Docker Compose su Ubuntu 18.04

  2. Come installare Docker Compose su Ubuntu 20.04

  3. Come installare e utilizzare Docker Compose su Ubuntu 18.04

  4. Errori con Vagrant e Ubuntu 12.10 con Rvm?

  5. Configura un ambiente chroot su Ubuntu con debootstrap

Come installare e utilizzare Docker Compose su Ubuntu 20.04

Come installare e utilizzare Docker Compose su Ubuntu 22.04

Come installare e configurare Laravel con Docker Compose su Ubuntu 22.04

Come installare e configurare Laravel con Docker Compose su Ubuntu 20.04

Come installare Ruby on Rails su Ubuntu 20.04 con RVM

Installa e usa Docker Compose con Docker su Ubuntu 22.04