Поиск по сайту:

Настройка среды разработки Ruby on Rails с помощью Docker и Docker Compose в Ubuntu


На этой странице

  1. Шаг 1. Установите Docker и Docker Compose
  2. Шаг 2. Создание проекта Ruby on Rails
  3. Шаг 3. Настройка проекта Rails
  4. Шаг 4. Создание файла Docker Compose
  5. Шаг 5. Создание проекта
  6. Шаг 6. Тестовое создание базового CRUD на Rails
  7. Справочник

Docker — это проект с открытым исходным кодом, который предоставляет разработчикам и системным администраторам открытую платформу для создания, упаковки и запуска приложений в любом месте в виде облегченного контейнера. Docker автоматизирует развертывание приложений внутри программных контейнеров.

Ruby on Rails (RoR) — это среда веб-приложений с открытым исходным кодом, опубликованная под лицензией MIT. Это среда веб-приложений на стороне сервера, которая следует концепции MVC (Model-View-Controller).

В этом руководстве я покажу вам, как настроить среду разработки для приложений Ruby on Rails с помощью Docker и Docker compose. Мы будем использовать Ubuntu 18.04 в качестве операционной системы хоста и использовать базу данных PostgreSQL для нашего проекта Rails.

Что мы будем делать:

  1. Установите Docker и Docker Compose
  2. Создание проекта Rails
  3. Настройка проекта Rails
  4. Создать скрипт Docker Compose
  5. Создать проект
  6. Тестирование создания базового CRUD на Rails

Шаг 1. Установите Docker и Docker Compose

Первый шаг, который мы должны сделать, это установить докер и сам докер. Мы установим докер из официального репозитория докеров и установим docker-compose из официального проекта докера на GitHub.

Перед установкой пакетов Docker выполните приведенную ниже команду apt, чтобы установить зависимости пакетов.

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

Теперь добавьте ключ докера и репозиторий докера.

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"

Команда автоматически обновит все репозитории в системе. Когда все будет готово, установите пакеты docker-ce.

sudo apt install -y docker-ce

Дождитесь установки docker-ce, а затем запустите службу docker и добавьте ее во время загрузки.

sudo systemctl start docker
sudo systemctl enable docker

Docker запущен и работает в системе.

Затем установите docker-compose, загрузив двоичный файл непосредственно из репозитория docker GitHub.

Загрузите двоичный файл docker-compose в каталог /usr/local/bin/ и сделайте его исполняемым.

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-compose были установлены в систему, проверьте версию с помощью команд ниже.

docker version
docker-compose version

Ниже приведен результат.

Шаг 2 — Создание проекта Ruby on Rails

После установки основных пакетов docker и docker-compose в систему мы хотим создать нового пользователя, а затем сгенерировать проект Rails, используя образы докеров.

Добавьте пользователя с именем hakase и дайте ему пароль.

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

Добавьте пользователя в группу sudo и docker и войдите в оболочку пользователя hakase.

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

Теперь пользователь hakase может выполнить команду docker.

Далее мы создадим новый каталог rails для нашего проекта Ruby on Rails.

Создайте каталог rails и перейдите в него.

mkdir -p ~/rails
cd ~/rails/

Теперь выполните приведенную ниже команду запуска докера.

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

Команда запустит временный контейнер на основе образа ruby:alpine, смонтирует локальный каталог в каталог /usr/src внутри контейнера, а затем выполнит команду оболочки sh и перейдет в каталог приложения.

Внутри контейнера установите пакеты сборки.

apk add build-base

Теперь установите Ruby on Rails во временный контейнер.

gem install -N rails

И сгенерируйте новый проект Rails с именем app с PostgreSQL в качестве базы данных, а затем выйдите/выйдите из контейнера.

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

И вы окажетесь в приложении каталога проекта Rails.

Теперь измените владельца каталога проекта приложения на пользователя hakase.

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

И проект Ruby on Rails был сгенерирован через временный док-контейнер.

Шаг 3 — Настройка проекта Rails

На этом шаге мы создадим новый Dockerfile для наших приложений Rails.

Внутри каталога rails создайте новый Dockerfile с помощью vim.

vim Dockerfile

Вставьте конфигурацию ниже.

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

Сохранить и выйти.

Создавали новый образ докера на основе Linux Ruby Alpine. Устанавливали новые пакеты для установки rails, создавали новый каталог /app, копировали Gemfile и Gemfile.lock из локального каталога приложения и устанавливали все пакеты на основе Gemfile.

Далее перейдите в каталог приложения, создайте новый файл Gemfile.lock.

cd app/
touch Gemfile.lock

Отредактируйте файл database.yml.

vim config/database.yml

Измените конфигурацию базы данных по умолчанию и измените детали, как показано ниже.

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

Сохранить и выйти.

Настройка проекта Rails завершена.

Шаг 4 — Создайте файл Docker Compose

На этом шаге мы создадим новый файл docker-compose для нашего приложения Rails. Мы создадим только две службы базы данных базы данных PostgreSQL, а веб — это само приложение rails.

Создайте новый файл docker-compose.yml внутри каталога rails.

vim docker-compose.yml

И вставьте конфигурацию ниже.

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

Сохранить и выйти.

Теперь создайте каталог postgresql внутри проекта rails.

mkdir -p ~/rails/postgresql

И были готовы построить наш проект Rails.

Шаг 5 - Создайте проект

Создайте образ докера Rails с помощью приведенной ниже команды docker-compose.

docker-compose build

Команда загрузит образ Ruby Alpine Linux и создаст собственный образ, который нам нужен, на основе нашего Dockerfile.

Создайте базу данных PostgreSQL для проекта.

docker-compose run web rake db:create

Теперь поднимите БД и веб-сервисы.

docker-compose up -d

И сервисы rails запущены и работают, проверьте это с помощью команды docker-compose ниже.

docker-compose ps

Вы можете видеть, что веб-служба работает на порту 80 на хосте.

Теперь проверьте образы докеров в нашей системе.

docker-compose images

И вы получите результат, как показано ниже.

Теперь откройте веб-браузер и введите IP-адрес сервера или доменное имя. Мой:

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

И вы получите приложение страницы Rails по умолчанию.

Теперь были готовы развивать наш проект Rails.

Шаг 6. Тестовое создание базового CRUD на Rails

Создайте простой CRUD на рельсах, запустив команду rails внутри службы веб-контейнера.

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

Теперь сгенерируйте базу данных.

docker-compose exec web rake db:migrate

Теперь откройте веб-браузер и введите IP-адрес сервера в адресной строке с путем /posts. Мой:

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

И вы получите простую страницу CRUD, как показано ниже.

Введите сообщение и нажмите кнопку «Создать сообщение».

И вы получите результат, как показано ниже.

Настройка среды разработки для Ruby on Rails с Docker и Docker Compose успешно завершена.

Ссылка

  • https://docs.docker.com/