Docker for Macで Rails + PostgreSQLの開発環境を構築する

Mac + Rails + PostgreSQL の開発環境をDockerを使って、素早く構築するための手順です。

Docker for Macのインストール

こちらからDocker for Macをインストール ~ ダウンロード ~ Dockerアプリを起動します。

必要なファイルを作成

Railsアプリ用のディレクトリを作って、そこに移動します。今回はmyappとしました。

そして、作成したディレクトリに次の4つのファイルを以下の内容で作成します。
・ dockerfile
・ Gemfile
・ Gemfile.lock
・ docker-compose.yml

dockerfile

Gemfileは現時点では、これだけです。railsはバージョン指定なしで、最新版がインストールされます。

Gemfile

空のGemfile.lockを用意します。

Gemfile.lock(空のファイル)

docker-compose.yml

プロジェクトの構築

次のコマンドで上記ファイルを読み込み、Dockerコンテナ上に、Railsアプリケーションが作成されます。

Docker imageの作成

次のコマンドでdocker iamgeを作成します。

データベースの設定と作成

DBの設定を以下のように、追加します。

config/database.yml

そして、DBを作成するコマンドを実行します。

Dockerの起動

次のコマンドで、Dockerコンテナが立ち上がり、Rails Serverも起動します。

そして、http://localhost:3000にアクセスして、こちらのページが表示されたら、成功です。

コンテナの停止と起動

ショートカットの「Control + C」でコンテナが停止し、$ docker-compose up で起動します。
webサーバが正常に終了していない時に、次のようなログが出て、コンテナの起動に失敗することがあります。

そのような時はpid情報を削除するために、次のコマンドを実行すると解決します。

その他

開発中にrailsコマンドを実行する場合は 次のように、$ docker-compose run webをつけます。

また、Gemfileを更新したときは、$ docker-compose build をしなければいけません。なので、Gemfileを更新したときは、次の2つのコマンドを実行する必要があります。

この手間をなんとかしたいのですが、現状できていません。(泣)

以上です!ご覧いただき、ありがとうございました!!


投稿者:

Shuji

読書したり、プログラミングしたりしています。何かアウトプットできそうなものがあれば投稿していきたいと思います。