GNU/Linux >> Znalost Linux >  >> Ubuntu

Nastavte vývojové prostředí Ruby on Rails pomocí Docker a Docker Compose na Ubuntu

Docker je projekt s otevřeným zdrojovým kódem, který poskytuje otevřenou platformu pro vývojáře a správce systému pro vytváření, balení a spouštění aplikací kdekoli jako odlehčený kontejner. Docker automatizuje nasazení aplikací uvnitř softwarových kontejnerů.

Ruby on Rails (RoR) je open source webový aplikační rámec, publikovaný pod licencí MIT. Jedná se o serverový webový aplikační rámec, který se řídí konceptem MVC (Model-View-Controller).

V tomto tutoriálu vám ukážu, jak nastavit vývojové prostředí pro aplikace Ruby on Rails pomocí Docker a Docker compose. Jako hostitelský operační systém budeme používat Ubuntu 18.04 a pro náš projekt Rails budeme používat databázi PostgreSQL.

Co uděláme:

  1. Nainstalujte Docker a Docker Compose
  2. Vygenerujte projekt Rails
  3. Nastavení projektu Rails
  4. Vytvořte skript Docker Compose Script
  5. Sestavte projekt
  6. Test Create Basic CRUD on Rails

Krok 1 – Instalace Docker a Docker Compose

Prvním krokem, který musíme udělat, je nainstalovat docker a docker compose sám. Nainstalujeme docker z oficiálního úložiště dockerů a nainstalujeme docker-compose z oficiálního projektu docker GitHub.

Před instalací balíčků Docker spusťte níže uvedený příkaz apt k instalaci závislostí balíčků.

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

Nyní přidejte klíč dockeru a úložiště dockeru.

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"

Příkaz automaticky aktualizuje všechna úložiště v systému. Po dokončení nainstalujte balíčky docker-ce.

sudo apt install -y docker-ce

Počkejte na instalaci docker-ce a poté spusťte službu docker a přidejte ji do doby spouštění.

sudo systemctl start docker
sudo systemctl enable docker

Docker je v systému spuštěný.

Dále nainstalujte docker-compose stažením binárního souboru přímo z úložiště docker GitHub.

Stáhněte si binární soubor docker-compose do adresáře '/usr/local/bin/' a vytvořte z něj spustitelný soubor.

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 a docker-compose byly nainstalovány do systému, zkontrolujte verzi pomocí příkazů níže.

docker version
docker-compose version

Níže je výsledek.

Krok 2 – Generování projektu Ruby on Rails

Po instalaci základních balíčků docker a docker-compose do systému chceme vytvořit nového uživatele a poté pomocí obrazů dockeru vygenerovat projekt Rails.

Přidejte uživatele s názvem 'hakase' a dejte uživateli heslo.

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

Přidejte uživatele do skupiny 'sudo' a 'docker' a přihlaste se do uživatelského prostředí 'hakase'.

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

Nyní může uživatel 'hakase' spustit a spustit příkaz docker.

Dále vytvoříme nový adresář 'rails' pro náš projekt Ruby on Rails.

Vytvořte adresář 'rails' a přejděte do něj.

mkdir -p ~/rails
cd ~/rails/

Nyní spusťte níže uvedený příkaz 'docker run'.

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

Příkaz spustí dočasný kontejner založený na obrázku ruby:alpine, připojí místní adresář do adresáře '/usr/src' uvnitř kontejneru a poté provede příkaz shellu 'sh' a přejde do adresáře 'app'.

Uvnitř kontejneru nainstalujte balíčky 'build-base'.

apk add build-base

Nyní nainstalujte Ruby on Rails do dočasného kontejneru.

gem install -N rails

A vygenerujte nový projekt Rails s názvem 'app' s PostgreSQL jako databází a poté ukončete/odhlaste se z kontejneru.

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

A budete v adresáři projektu Rails 'app'.

Nyní změňte vlastníka adresáře projektu 'app' na uživatele 'hakase'.

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

A projekt Ruby on Rails byl vygenerován prostřednictvím dočasného kontejneru docker.

Krok 3 – Nastavení projektu Rails

V tomto kroku vytvoříme nový Dockerfile pro naše aplikace Rails.

V adresáři 'rails' vytvořte nový Dockerfile pomocí vim.

vim Dockerfile

Vložte konfiguraci níže.

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

Uložte a ukončete.

Vytváříme nový docker image založený na linuxu Ruby Alpine. Instalujeme nové balíčky pro instalaci rails, vytvoříme nový adresář /app, zkopírujeme Gemfile a Gemfile.lock z místního adresáře app a nainstalujeme všechny balíčky založené na Gemfile.

Dále přejděte do adresáře 'app', vytvořte nový soubor Gemfile.lock.

cd app/
touch Gemfile.lock

Upravte soubor 'database.yml'.

vim config/database.yml

Změňte výchozí konfiguraci databáze a změňte podrobnosti, jak je uvedeno níže.

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

Uložte a ukončete.

Konfigurace projektu Rails byla dokončena.

Krok 4 – Vytvoření souboru Docker Compose

V tomto kroku vytvoříme nový soubor docker-compose pro naši aplikaci Rails. Vytvoříme pouze dvě služby db databázi PostgreSQL a web je samotná aplikace rails.

Vytvořte nový soubor 'docker-compose.yml' v adresáři 'rails'.

vim docker-compose.yml

A vložte konfiguraci níže.

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

Uložte a ukončete.

Nyní vytvořte adresář 'postgresql' uvnitř projektu 'rails'.

mkdir -p ~/rails/postgresql

A jsme připraveni postavit náš projekt Rails.

Krok 5 – Sestavení projektu

Vytvořte obraz ukotvitelného panelu Rails pomocí příkazu docker-compose níže.

docker-compose build

Příkaz stáhne bitovou kopii Ruby Alpine Linux a vytvoří vlastní bitovou kopii, jak potřebujeme, na základě našeho Dockerfile.

Vygenerujte PostgreSQL databázi pro projekt.

docker-compose run web rake db:create

Nyní aktivujte služby 'db' a 'web'.

docker-compose up -d

A služby rails fungují, zkontrolujte to pomocí příkazu docker-compose níže.

docker-compose ps

Můžete vidět, že služba 'web' běží na portu '80' na hostiteli.

Nyní zkontrolujte obrázky dockerů v našem systému.

docker-compose images

A dostanete výsledek, jak je uvedeno níže.

Nyní otevřete webový prohlížeč a zadejte IP adresu serveru nebo název domény. Můj je:

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

A získáte na něm výchozí aplikaci stránky Rails.

Nyní jsme připraveni vyvinout náš projekt Rails.

Krok 6 – Otestujte vytvoření základního CRUD on Rails

Vygenerujte jednoduchý CRUD on rails spuštěním příkazu rails uvnitř 'web' kontejnerové služby.

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

Nyní vygenerujte databázi.

docker-compose exec web rake db:migrate

Nyní otevřete webový prohlížeč a do adresního řádku zadejte IP adresu serveru s cestou '/posts'. Můj je:

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

A získáte jednoduchou stránku CRUD, jak je uvedeno níže.

Napište příspěvek a klikněte na tlačítko 'Vytvořit příspěvek'.

A dostanete výsledek, jak je uvedeno níže.

Nastavení vývojového prostředí pro Ruby on Rails pomocí Docker a Docker Compose bylo úspěšně dokončeno.


Ubuntu
  1. Jak nainstalovat Docker Compose na Ubuntu 18.04

  2. Chyby s Vagrant a Ubuntu 12.10 s Rvm?

  3. Nastavte chroot prostředí na Ubuntu pomocí debootstrap

  1. Jak nainstalovat Docker Compose na Ubuntu 20.04

  2. Jak nainstalovat a používat Docker Compose na Ubuntu 18.04

  3. Jak nastavit a nakonfigurovat Docker Swarm Cluster na Ubuntu

  1. Jak nainstalovat Ruby on Rails (RoR) s PostgreSQL na Ubuntu 16.04

  2. Dockerizace Wordpressu pomocí Nginx a PHP-FPM na Ubuntu 16.04

  3. Jak nainstalovat Gitlab s PostgreSQL a Nginx na Ubuntu 15.04