Настройка среды разработки Ruby on Rails с помощью Docker и Docker Compose в Ubuntu
На этой странице
- Шаг 1. Установите Docker и Docker Compose
- Шаг 2. Создание проекта Ruby on Rails
- Шаг 3. Настройка проекта Rails
- Шаг 4. Создание файла Docker Compose
- Шаг 5. Создание проекта
- Шаг 6. Тестовое создание базового CRUD на Rails
- Справочник
Docker — это проект с открытым исходным кодом, который предоставляет разработчикам и системным администраторам открытую платформу для создания, упаковки и запуска приложений в любом месте в виде облегченного контейнера. Docker автоматизирует развертывание приложений внутри программных контейнеров.
Ruby on Rails (RoR) — это среда веб-приложений с открытым исходным кодом, опубликованная под лицензией MIT. Это среда веб-приложений на стороне сервера, которая следует концепции MVC (Model-View-Controller).
В этом руководстве я покажу вам, как настроить среду разработки для приложений Ruby on Rails с помощью Docker и Docker compose. Мы будем использовать Ubuntu 18.04 в качестве операционной системы хоста и использовать базу данных PostgreSQL для нашего проекта Rails.
Что мы будем делать:
- Установите Docker и Docker Compose
- Создание проекта Rails
- Настройка проекта Rails
- Создать скрипт Docker Compose
- Создать проект
- Тестирование создания базового 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/