chat-blog

僕の独り言が誰か一人の役に立つことを祈って

*

【Docker入門】さくっと5分でrailsアプリを立ち上げてみた

      2016/12/13

dockerのイメージがぼんやりなので、お勉強として自身のMacにDockerを使ってrailsを立ててみました。
一応ブラウザからの動作確認までいけました。

PR

プロジェクトのディレクトリ作成

まずはrubyのコンテナを持ってくる。

動かしてみる

 

カレントディレクトリにGemfileが出来上がったので、

を記載する。

イメージ内にgemを埋め込む為に、Gemfile.lockを生成しておきます。

そしてDockerfileに下記の内容を記載します。

Dockerfileを作ったら、

たくさんの文字がコンソールに流れてこれでイメージができあがります。

 

rails newしてみる

 

 

rails new .

やったときのメッセージですね。
最後にGemfileが既にあるけど上書きしていいかい?と聞かれていますので【Y】で上書きします。

DockerFileに

を追記

ビルドして再作成する

起動するだけなら

でいけます。

こうすることで、
<プロジェクトへのファイルパス>
ここをマウントした状態になるため、ここで直接ファイルを書き換えて、再起動させることでそのまま設定が反映されます。

再起動の仕方

下記コマンドを実行

とりあえずこれでrailsアプリは立ち上がったのだと思う。
続いてdocker-composeでコンテナを管理していく。

docker-composeとは?

複数のコンテナを使ってアプリが構成されるときに、
例えば4つあったら、4回コンテナの起動コマンドを叩かないといけないけど、
docker-compose.yml


・起動するコンテナ
・そのコンテナがリッスンするポート
・その他環境設定とか

を書いておくことで一発のコマンドで必要なコンテナを同時にあげることができるものなんじゃないかと思われる。

今回だとrailsはデータベース(mysql)と一緒に動くものなので
・rails
・mysql
2つのコンテナを
docker-composeで管理しようというすんぽう。

では書いていきます。

vi docker-compose.ymlで

docker-compose.ymlができたら再ビルド

※この時、
〜〜〜〜〜port is already allocated
みたいに、空いてるはずのポートなのに、「すでにそのポートは使われているよ」というメッセージがでてくることがあります。
詳しくはわかりませんが、よくあることみたいで、Dockerを再起動したあとにもう一度

叩くとうまくいきます。

ここからはDBのコンテナの設定をしていきます。

Gemfileを修正

の記述を、

に変更

vim config/database.yml で

に編集

先程編集していたdocker-compose.yml を編集する

またビルドする

起動しているコンテナを確認

この状態でブラウザで、
http://localhost:3000/
を打つとエラーがでます。
まだDBを作成していないためですね。

でDBを作成します。

以上でDockerを使ってrailsアプリを立ち上げることができました。
下記のサイトを参考に進めてみたのですが、
すごくわかりやすくほとんどそのまま言われるがままにやるだけでできあがりました。
この経験をもとにこれからDockerの知識を深めていきたいです。
http://qiita.com/togana/items/30b22fc39fe6f7a188ec

 今日の一言

railsは良いみたいですぞ。

 

 

スポンサーリンク

スポンサードリンク

スポンサードリンク

最後まで見ていただきありがとうございます。
今後とも頑張って更新していきますのでもしよろしければ
下記お一つでもシェアしていただけると幸甚です。
Facebookでシェア Twitterでシェア はてなブックマーク LINEで送る

 - 技術系

スポンサーリンクと関連コンテンツ

  関連記事

またもこのブログ(word press)で「bad gateway 502エラー」がでました。

今日は19:30頃には会社をでて(僕の会社は10時出社の19時定時)、 早めに家 …

【Ansible】複数のリスト(配列)をループさせて全パターンを網羅する方法

いわゆるnested loopをAnsibleでって話です。配列同士を入れ子にし …

【Ansible】linuxのコマンド実行結果を元に処理をわけたい

nfsをマウントさせるときにサーバ上のmountのバージョンが古いとansibl …

Route53とムームードメインを使って独自ドメイン取得したよ!

毎度、チャットです。 ブログが出来上がって「さあこれから更新だ」ってなって、 「 …

【Ansible】変数内に特定文字列が含まれているか確認して処理を分ける方法

Ansibleのwhen句で使えるmatchによる判定の仕方です。

【エンジニア必見】vimでの入力補完の仕方

viでの入力補完について、あまり使われていないようなので、 一応記事に載せておき …

自動化で便利なlinuxのexpectコマンドをソースからインストールする方法

自動化してるとどうしてもexpectコマンドが必要になってくることがあります。 …

【python】変数内に、ある文字列が存在するか確認

些細なことですが、寝たらすぐに忘れてしまうのメモ。(揮発性なのです)

【へぇ】IT業界でよく見る、rc版、とかga版とはなんぞや

掲題の件について調べてみました。

【ansible】”ERROR! ‘unicode’ object has no attribute ‘xx’とかいうメッセージがでる

  最近仕事でansibleに触れてて久しぶりに開発っぽいことしてて生 …

※コメントですが僕が確認してからとなるのでだいたい3日後の反映となります。

Message

メールアドレスが公開されることはありません。