GNU/Linux >> Linux の 問題 >  >> Ubuntu

UbuntuでDockerとDockerComposeを使用してRubyonRails開発環境をセットアップする

Dockerは、開発者とシステム管理者が軽量のコンテナーとしてどこにいてもアプリケーションを構築、パッケージ化、実行するためのオープンプラットフォームを提供するオープンソースプロジェクトです。 Dockerは、ソフトウェアコンテナ内のアプリケーションのデプロイを自動化します。

Ruby on Rails(RoR)は、MITライセンスの下で公開されているオープンソースのWebアプリケーションフレームワークです。これは、MVC(Model-View-Controller)の概念に従ったサーバー側のWebアプリケーションフレームワークです。

このチュートリアルでは、DockerとDockercomposeを使用してRubyonRailsアプリケーションの開発環境をセットアップする方法を説明します。ホストオペレーティングシステムとしてUbuntu18.04を使用し、RailsプロジェクトにPostgreSQLデータベースを使用します。

私たちが行うこと:

  1. DockerとDockerComposeをインストールする
  2. Railsプロジェクトを生成する
  3. Railsプロジェクトを設定する
  4. Docker作成スクリプトを作成する
  5. プロジェクトを構築する
  6. Railsで基本的なCRUDを作成するテスト
ステップ1-DockerとDockerComposeをインストールします

私たちがしなければならない最初のステップは、dockerとdockercompose自体をインストールすることです。公式のdockerリポジトリからdockerをインストールし、公式のdockerGitHubプロジェクトからdocker-composeをインストールします。

Dockerパッケージをインストールする前に、以下のaptコマンドを実行してパッケージの依存関係をインストールしてください。

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

次に、DockerキーとDockerリポジトリを追加します。

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はシステム上で稼働しています。

次に、dockerGitHubリポジトリからバイナリファイルを直接ダウンロードしてdocker-composeをインストールします。

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とdocker-composeがシステムにインストールされています。以下のコマンドを使用して、バージョンを確認してください。

docker version
docker-compose version

結果は以下のとおりです。

ステップ2-RubyonRailsプロジェクトを生成する

コアパッケージdockerとdocker-composeをシステムにインストールした後、新しいユーザーを作成し、dockerイメージを使用して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コマンドを実行して実行できます。

次に、RubyonRailsプロジェクト用の新しいディレクトリ「rails」を作成します。

'rails'ディレクトリを作成して移動します。

mkdir -p ~/rails
cd ~/rails/

次に、以下の「dockerrun」コマンドを実行します。

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

このコマンドは、ruby:alpineイメージに基づいて一時コンテナを実行し、ローカルディレクトリをコンテナ内の「/ usr / src」ディレクトリにマウントしてから、「sh」シェルコマンドを実行して「app」ディレクトリに移動します。

コンテナ内に、「build-base」パッケージをインストールします。

apk add build-base

次に、RubyonRailsを一時コンテナー内にインストールします。

gem install -N rails

そして、データベースとしてPostgreSQLを使用して「app」という名前の新しいRailsプロジェクトを生成し、コンテナから終了/ログアウトします。

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

そして、Railsプロジェクトディレクトリ「app」に移動します。

次に、「app」プロジェクトディレクトリの所有者を「hakase」ユーザーに変更します。

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

また、RubyonRailsプロジェクトは一時的なDockerコンテナを介して生成されています。

ステップ3-Railsプロジェクトをセットアップする

このステップでは、Railsアプリケーション用の新しいDockerfileを作成します。

'rails'ディレクトリ内で、vimを使用して新しいDockerfileを作成します。

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

保存して終了します。

RubyAlpineLinuxをベースにした新しいDockerイメージを作成しています。 Railsインストール用の新しいパッケージをインストールし、新しい/ appディレクトリを作成し、アプリのローカルディレクトリからGemfileとGemfile.lockをコピーして、Gemfileに基づいてすべてのパッケージをインストールします。

次に、「app」ディレクトリに移動し、新しいファイル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作成ファイルを作成する

このステップでは、Railsアプリケーション用の新しいdocker-composeファイルを作成します。 2つのサービスdbデータベースPostgreSQLのみを作成し、webはrailsアプリケーション自体です。

'rails'ディレクトリ内に新しいファイル'docker-compose.yml'を作成します。

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

保存して終了します。

次に、「rails」プロジェクト内に「postgresql」ディレクトリを作成します。

mkdir -p ~/rails/postgresql

これで、Railsプロジェクトを構築する準備が整いました。

ステップ5-プロジェクトをビルドする

以下のdocker-composeコマンドを使用してRailsdockerイメージをビルドします。

docker-compose build

このコマンドは、Ruby Alpine Linuxイメージをダウンロードし、Dockerfileに基づいて必要に応じてカスタムイメージをビルドします。

プロジェクトのPostgreSQLデータベースを生成します。

docker-compose run web rake db:create

次に、「db」サービスと「web」サービスを起動します。

docker-compose up -d

Railsサービスが稼働しているので、以下のdocker-composeコマンドを使用して確認してください。

docker-compose ps

サービス「web」がホストのポート「80」で実行されていることがわかります。

次に、システムでDockerイメージを確認します。

docker-compose images

そして、以下のような結果が得られます。

次に、Webブラウザーを開き、サーバーのIPアドレスまたはドメイン名を入力します。私のは:

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

そして、デフォルトのRailsページアプリケーションが表示されます。

これで、Railsプロジェクトを開発する準備が整いました。

ステップ6-レール上で基本的なCRUDを作成するテスト

'web'コンテナサービス内でrailsコマンドを実行して、レール上に単純なCRUDを生成します。

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

次に、データベースを生成します。

docker-compose exec web rake db:migrate

次に、Webブラウザーを開き、アドレスバーにパス「/posts」を使用してサーバーのIPアドレスを入力します。私のは:

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

そして、以下のような簡単なCRUDページが表示されます。

投稿を入力して、[投稿を作成]ボタンをクリックします。

そして、以下のような結果が得られます。

DockerおよびDockerComposeを使用したRubyonRailsの開発環境のセットアップが正常に完了しました。


Ubuntu
  1. Ubuntu18.04にDockerComposeをインストールする方法

  2. VagrantとUbuntu12.10のRvmでのエラー?

  3. debootstrapを使用してUbuntuでchroot環境をセットアップします

  1. Ubuntu20.04にDockerComposeをインストールする方法

  2. Ubuntu18.04にDockerComposeをインストールして使用する方法

  3. UbuntuでDockerSwarmクラスターをセットアップおよび構成する方法

  1. Ubuntu16.04でPostgreSQLを使用してRubyonRails(RoR)をインストールする方法

  2. Ubuntu16.04でNginxとPHP-FPMを使用してWordpressをDocker化する

  3. Ubuntu15.04にPostgreSQLとNginxを使用してGitlabをインストールする方法