1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Docker基本操作、Railsプロジェクトの作成(MacOS)

Last updated at Posted at 2023-04-01

自分用の作業メモとして残します。
(Markdownはあとで修正)

開発環境

Tool Version
MacOS(Ventura) 13.0
Docker 20.10.23
Ruby 2.6.4
Rails 6.0.0

Docker

Dockerとは

Dockerは、仮想環境を提供するオープンソースソフトウェアです。
設定の容易さや起動の速さなどの理由により、開発者の間でとても人気があります。
Dockerでは、個々の仮想環境をコンテナと呼びます。
コンテナの内容はDockerfileと呼ばれるテキストファイルで記述されます。
このファイルがあればさまざまなOS上でコンテナを復元できます。

  • Docker Hubのアカウントを取得し、ログインしてインストーラをダウンロードして使用します。

Docker Composeとは

Dockerを用いてRailsアプリケーションを開発したり、production環境で動かすとき、RubyアプリケーションとDBサーバーを別々のコンテナとして構築するのが一般的です。
Docker Composeはこれらの複数のコンテナをまとめて起動・停止するためのツールです。
コマンド一つ実行するだけで、Webアプリケーションを構成するすべてのコンテナ群が動作します。

Dockerの基本操作

Dockerは2つのコンテナを使用します。
1つではRailsアプリケーションが動き、もう一つではRDBMSのPostgreSQLが動きます。
前者のコンテナをweb、後者のコンテナをdbと呼びます。

バージョン確認
$ docker --version            # Dockerバージョン確認
$ docker-compose --version    # Docker-composeのバージョン確認
Rails開発用コンテナ群の構築
$ git clone https://github.com/oiax/rails6-compose.git
$ cd rails6-compose
$ ./setup.sh
コンテナ群の起動、動作確認
$ docker-compose up -d           # -dは、コンテナをデーモンとして動かすためのもの
$ docker-compose ps              # プロセス状態の確認
$ docker-compose images          # imageのリスト表示
$ docker volume ls               # volumeのリスト表示
$ docker network ls              # networkのリスト表示
コンテナ群の停止
$ docker-compose stop            #PC電源を落とす前にコンテナ群を停止してください
webコンテナにログイン
$ docker-compose exec web bash
$ rails --version                #Railsのバージョンを確認
$ exit                           #webコンテナをログアウト

Railsプロジェクトの作成

rails new
$ rails new test-project -d postgresql --skip-test-unit
 # -d postgresql・・データベースにPostgreSQLを指定。
 # --skip-test-unit・・テストフレームワークとしてTest::Unitの代わりにRSpecを使用するので、Test::Unit関連の生成を省略

Gemfileの修正とbundle install

Gemfile修正と適用
$ vim Gemfile       # インストール対象のgemとバージョンを記入
$ bin/bundle        # 適用(bundle installと同じ動作です)

データベースのセットアップ設定と作成

  • データベースのconfigです。
  • 適切な設定をしないとデータベースとの接続が出来ません。
config/database.ymlの編集
$ vim database.yml       # 編集してインストール対象のgemとバージョンを記入
  • webコンテナで次のコマンドを実行すると、データベースが作成されます。
開発環境(development)のデータベース作成方法
$ bin/rails db:create    # データベースの作成
本番環境(production)のデータベース作成方法
$ bin/rails db:create RAILS_ENV=production    # データベースの作成

hostsファイルの設定

/private/etc/hosts(macOS)
127.0.0.1  example.com  project.example.com  # ループバックにホスト名1,2を設定し名前解決
#(loopback) (ホスト名1)  (ホスト名2)

# Dockerの仮想マシン上で動作するRailsアプリケーションに、
# 特定のホスト名でアクセスする必要があるためホスト名を設定する

Blocked Hostsの設定

config/initializers/blocked_hosts.rb(新規作成)
Rails.application.configure do
  config.hosts << "example.com"
  config.hosts << "project.example.com"
end

web-consoleの設定

web-consoleはRailsアプリケーションのデバッグツール。
初期状態では127.0.0.1からのアクセスしか受け付けないようになっているため、
Docker環境でrailsアプリケーションを動かして、ホストOS側のブラウザでアクセスするとweb-consoleは応答しない。
この問題を回避するため、config/environmentディレクトリにあるファイルdevelopment.rbを以下のように書き換える。

config/environments/development.rb
# (中略)
# 以下を最終行に追加
  config.web_console.whitelisted_ips = [ "127.16.0.0/12" ]
end

Webアプリケーションの動作確認

webコンテナ側でrailsアプリケーションを起動します。

railsサーバの実行(開発環境)
$ rails s -b 0.0.0.0
railsサーバの実行(本番環境)
$ rails s -e production -b 0.0.0.0

アプリケーションサーバを起動後、ブラウザを起動しhostsで設定したホスト名1、2のURLでwebサーバにアクセスできるか確認する。

ブラウザでhostsに設定したURLでアクセスする
http://example.com:3000
          or
http://project.example.com:3000

→「Yay! You're on Rails!」が表示されたら問題なし
また、ターミナルにログが表示されるのでこちらも確認する

Dockerの基本操作

docker-compose upで作られたものを一括削除する

一括削除
$ docker-compose down --rmi all --volumes

削除されたかを確認しよう

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?