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

 - 技術系

  関連記事

docker
【Docker】イメージとコンテナの違いについて【初心者雑記】

現在Dockerについて興味があり使ってみたりしているが、 Dockerの概念を …

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

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

teishotoku_comu
VMwarePlayerで共有設定し、フォルダが出来上がる場所

どうも、 ホスト側においてあるファイルを、 VMのサーバに送りたいときには、 フ …

git
【GIT】既存のプロジェクトをコピーする方法

ansibleでテンプレートとなるplaybookファイル用意してて、 サービス …

zabbix
【Zabbix】セットアップ中に、Error connecting to database: No such file or directoryが出たときの対処法

検証でzabbix3.0のインストールをしていて何度かハマったので残しておきます …

python-powered-h-140x182
pythonで正規表現を使って文字列を検索してマッチした全てを出力する

プログラミングしていて、 とあるファイルや外部サイトのHTMLだとかを部っこ抜き …

command_line
macのターミナルで「ll」コマンド叩いても「コマンドが見つかりません」となる

まいど。 新しくかったimacで久しぶりに開発でもするかなと思ってターミナル(i …

xcode_icon
xcode6をvimライクにした。

まいど。つい先程からxcodeのswiftの勉強をし始めましたチャットです。 そ …

9593a204edbd6cb7092555a6cbc74033
Macで意図しない【cmd + q】を防ぐ方法

ブラウジングしてて見終わったタブを閉じようとして、 【cmd + w】を押すつも …

ftp-ic
【Linux】FTPコマンドでローカルホスト上のファイルをリモートホストに転送する方法

毎回ググってるのでアウトプットしておきます。 PR 仕事している環境のセキュリテ …

Message

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">