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で送る

 - 技術系

\皆によく読まれてる人気記事/

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

  関連記事

【Python】マルコフ連鎖を使ってみる

好きなアニメキャラと会話したいという目的から、 deeplearningを使って …

logrotateしたファイルがバイナリになって肥大化してしまう件について検証してみた

先日ログローテートしてるファイルがバイナリになってしまうという事象が発生した。 …

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

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

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

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

【Python】インストールしたパッケージを完全にアンインストールする方法

仕事でansibleを使ったりしてて検証中にバージョンを上げたり下げたりって結構 …

【Ansible】jinja2で変数内の文字列検索しマッチした場合とで処理を分けたい

jinja2のテンプレートを使っててマジック変数内にとある文字列があった場合、な …

【GIT】Masterブランチをcloneして別ブランチをローカルで作ってpushする

ふとMasterをcloneしてきて動作検証してる中で書き換えたりしちゃって、 …

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

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

【Oracle12c】列と列の連結の仕方。エスケープの方法

SQLを書いてて列と列を連結させたいときや、 列と文字列を連結させたいときがある …

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

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

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

Message

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