RailsアプリケーションをDokkuサーバーにデプロイする
イントロダクション
レールアプリケーションをデプロイする方法はたくさんあり、多くのプラットフォームやツールがこれを支援しています。そのうちの1つは、Dokkuがインストールされたサーバーにレールアプリケーションをデプロイすることです。この記事では、Dokkuの簡単な概要と、Dokkuがインストールされたサーバーにレールアプリケーションを簡単にデプロイする方法を紹介します。
Dokkuとは何ですか?
Dokkuを数言で説明すると、HerokuのオープンソースのPlatform as a Service(PaaS)の代替として説明できます。 Dokkuは、さまざまなハードウェアおよび安価なサーバーにデプロイするためにDockerの力を活用します。サーバーを完全に制御し、Herokuのような機能を楽しむことができます。さらに、Dokkuはさまざまなアプリケーションをデプロイするのを助けるプラグインをサポートしています
Railsアプリケーションをデプロイする
レールアプリケーションをDokkuサーバーにデプロイするプロセスは非常に簡単です。最初に、アプリケーションを管理およびデプロイするコマンドラインインターフェイスであるDokku CLIをインストールする必要があります。インストールしたら、CLIを使用して、Dokkuアプリを作成し、そのアプリにコードをプッシュすることでアプリケーションをデプロイできます。ステップバイステップで行きましょう。
1. システム要求
次のリストに従って新しいオペレーティングシステムがインストールされます。
サーバーには次のアーキテクチャの1つがあります:
- AMD64(x86_64としても知られています)は、Intelクラウドサーバーで一般的に使用されています。
- ARMV7(armhfとしても知られています)は、Raspberry PIで一般的に使用されています。
- ARMV8(arm64としても知られています)は、Raspberry PIとAWS Gravitonで一般的に使用されています。
サーバー負荷を避け、使用中の予期しないエラーを回避するために:
- サーバーには少なくとも1GBのRAMが必要です。
- サーバーが1GBのRAM以下の場合、サーバーのスワップを作成する:
cd /var touch swap.img chmod 600 swap.img dd if=/dev/zero of=/var/swap.img bs=1024k count=1000 mkswap /var/swap.img swapon /var/swap.img free echo "/var/swap.img none swap sw 0 0" >> /etc/fstab
最後に、ドメイン名、これは必須ではありません。しかし、ドメイン名を使用すると、IPアドレスよりもアプリケーションへのアクセスが容易になります。
2. サーバー上にDokkuをインストールする
Dokkuをブートストラップファイルを使用してインストールします。
wget https://dokku.com/install/v0.29.4/bootstrap.sh #0.29.4 là phiên bản cài đặt sudo DOKKU_TAG=v0.29.4 bash bootstrap.sh
SSHキーと仮想ホストの設定
# 通常、キーは現在のユーザーの~/.ssh/authorized_keysファイルに既に利用可能です cat ~/.ssh/authorized_keys | dokku ssh-keys:add admin # あなたがアクセスできるすべてのドメインを使用することができます # このドメインは、サーバーのIPに向けられたAレコードまたはCNAMEを持つ必要があります dokku domains:set-global dokku.me # また、サーバーのIPも使用することができます dokku domains:set-global 10.0.0.2
3. Railsアプリケーションを展開する
サーバー上のDokkuを設定した後、次のステップに従って基本的なRailsアプリケーションをデプロイします:
この例では、デプロイするためにHeroku Ruby on Rails “Getting Started” appリポジトリを使用します。
サーバーにGitリポジトリからソースコードをクローンします。
# ローカルマシンから # このホストでのGitHubへのSSHアクセスが有効になっている必要があります git clone https://github.com/heroku/ruby-getting-started
Dokku上でアプリケーションを作成します。
# Dokkuホスト上で dokku apps:create ruby-getting-started
Dokkuはデフォルトでは、プリインストールされたデータベースを提供しませんので、プラグインを介してインストールする必要があります。Dokkuのホームページから利用可能なプラグインのリストにアクセスできます。ここではPostgresを使用するので、Dokkuが提供するPostgresプラグインをインストールします。
# Dokkuホスト上で # postgresプラグインをインストールします # プラグインのインストールにはrootが必要であり、ユーザーの変更が必要です sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git
新しいデータベースを作成します。
# 名前がrailsdatabaseのpostgresサービスを作成します dokku postgres:create railsdatabase
前に作成したアプリケーションを新しく作成したデータベースとリンクする。
Dokkuは、Dokkuアプリケーション上に環境変数DATABASE_URL
を作成します。
# Dokkuホスト上で # 各公式データストアは、サービスをアプリケーションにリンクするためのlinkメソッドを提供します dokku postgres:link railsdatabase ruby-getting-started
ruby-getting-started
アプリをDokkuサーバーにデプロイする。すべて必要なことはgitにリモートを追加してソースコードをDokku gitリポジトリにプッシュすることです。
# ローカルマシンから # リモートユーザー名は 必ず dokkuである必要があります。そうでないとプッシュは失敗します cd ruby-getting-started git remote add dokku dokku@dokku.me:ruby-getting-started git push dokku main:master
git push dokku main:master
コマンドを実行した後、以下のような出力が得られます。
Counting objects: 231, done. Delta compression using up to 8 threads. Compressing objects: 100% (162/162), done. Writing objects: 100% (231/231), 36.96 KiB | 0 bytes/s, done. Total 231 (delta 93), reused 147 (delta 53) -----> Cleaning up... -----> Building ruby-getting-started from herokuish... -----> Adding BUILD_ENV to build environment... -----> Ruby app detected -----> Compiling Ruby/Rails -----> Using Ruby version: ruby-2.2.1 -----> Installing dependencies using 1.9.7 Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment Fetching gem metadata from https://rubygems.org/........... Fetching version metadata from https://rubygems.org/... Fetching dependency metadata from https://rubygems.org/.. Using rake 10.4.2 ... =====> Application deployed: http://ruby-getting-started.dokku.me
まとめ
Dokkuを使ってRailsアプリケーションをインストールすると、アプリケーションをすばやく簡単にデプロイできます。 数回の簡単なコマンドを実行するだけで、あなた自身のアプリケーションがすぐに実行されます。 上記の簡単なコマンドに加えて、Dokkuは、Dokkuによって提供されるプラグインとコミュニティによってDokkuをより柔軟で拡張可能にするようになった、高度な構成でさらに多くのことを行うことができます。
Dokkuには利点がありますが、残念ながら欠点もありますが、それを気に入って、Dokkuに関連する今後の記事を楽しみにしています。