Server

MyCoachのDocker環境を変えてみた

投稿日:2017年10月20日 更新日:

はじめに

MyCoachのアプリがリリースされました。
アプリとは別で、Web版のMyCoachも作成しておりました。
実際のコンテンツの方はこちらをご覧ください。
(現在はまだβ期間として運用しております。)
https://mycoach.re-engines.com/top

こちらのWeb版はDocker環境を作って開発しておりました。
さて、今回はリリースを機に、開発中ではいじれなかったDocker環境を少し改修してみたので、そのことを記事にしたいと思います。

ただ既に多くの方がまとめてくださっている内容なので、そこまで目新しいものはないと思います。
今回は、既存プロジェクトに組み込むということで記載していきたいと思います。

なんで改修しようと思ったか

今までは、RailsコンテナとMySQLコンテナの2つで構築しておりました。
コンパクトな構成ですね!

ただ、実際に本番でRailsを運用するときには、リバースプロキシを立てることが多いかと思います。
Dockerでも複数コンテナを組み合わせることで、そのような挙動を構築することができるので、ちょっと試してみたかったこともあります。

構成

使用するコンテナ

下記の4つのコンテナを使用します。

  • Rails
  • MySQL
  • Nginx ← New!!
  • Datastore ← New!!

Datastoreというコンテナが出てきましたが、このコンテナで共通のファイルや保持しておきたいファイルを持たせておきます。

各Dockerfile

各項目に関してディレクトリを切ってDockerfileや関連ファイルを保存します。
こうすることで、各環境も管理しやすくなるかと思います。

ソースコードを載せると長くなってしまうので、リンクで失礼します。
https://github.com/naoki85/docker_rails/tree/master/docker

docker-compose.yml

複数コンテナを扱うときには docker-compose.yml が便利ですね。
これで、 docker-compose up コマンドでまとめて起動できます。
(ビルドするときには docker-compose build

そこまで複雑なことはしておりませんが、Railsのコンテナでは unicorn コマンドで起動しております。

また、 service: password を記述することで、後ほど database.rb にMySQLのパスワードを記述する際、 password と記述すれば解釈してくれます。
(普通にパスワードを記述しても大丈夫ですが。)

Unicorn

アプリケーションサーバーにはUnicornを使用します。
既にUnicornがインストールされていれば、Railsプロジェクト内に unicorn ディレクトリがあるかと思いますので、新しく development.rb を作成します(もしくは既にある場合は修正)。

database.rb

注意することは、 host で指定するDBは、 docker-compose.yml で指定した service 名になります。

起動してみる

ここまでで、Docker環境を起動して、 http://localhost にアクセスしてみます(またはNginxで指定したホスト)。
これで、今まで通りのプロジェクトが表示されていれば成功です。

今回は既存プロジェクトでやってみましたが、新規プロジェクトでも同様の設定ができるかと思います。

気になること

Docker起動直後にアクセスすると、Nginxのエラー画面が表示されることがあります。
ちょっと待って、再度アクセスすると問題なく表示されているので、Unicornのプロセスが起動していないのかな、と思います。

この辺りを含め、改善した箇所などがあれば、随時更新していきたいと思います。

さいごに

Docker良いですね。
私は最近PCを変えたのですが、プロジェクトの開発環境を整える際、Dockerさえインストールしてしまえば、すぐに開発環境を整えることができました。
(その点だけでいうと、Vagrantでもできるとは思いますが。。。)

MyCoachの方も継続してアップデートする予定なので、今後ともよろしくお願いします!

blog-page_footer_336




blog-page_footer_336




-Server
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

no image

Firestoreのルール設定とdumpやrestoreが簡単に行えるfsrpl

1 はじめに2 Firestoreのルール設定2.1 全て許可2.2 本番環境でのルール設定例3 fsrpl3.1 fsrplとは3.2 インストール3.3 秘密鍵3.4 copy3.5 開発環境から ...

aws

EC2インスタンスのメモリとディスクのメトリクスモニタリングでハマったこと

1 はじめに2 メモリとディスクのメトリクスモニタリング3 ハマりポイント4 対応方法5 さいごに はじめに AWSのEC2インスタンスでディスク容量やメモリの使用率をCloudWatchで監視をする ...

CircleCIを使ってみた(RailsのRSpecとデプロイのサンプル)

1 はじめに2 導入するにあたって3 項目B4 補足4.1 開発環境とCI環境でdatabase.ymlが異なる5 さいごに はじめに 個人的に作成しているアプリケーションのCIツールとして、Circ ...

RubyでOSM Nominatimを使ってみた

1 はじめに2 導入3 検索3.1 建物名による検索の実装例3.2 住所による検索の実装例4 リバースジオコーディング4.1 実装例5 住所の整形6 Open Street Map Nominatim ...

同じレコードがないときだけインサートする!

はじめに あるアイテムを持っていない人だけ、別のアイテムをあげたい! もしくはその逆で、あるアイテムを持っている人に追加でアイテムをあげたい! そういうことってないでしょうか? 先日、僕がそのような状 ...

フォロー

blog-page_side_responsive

2017年10月
1234567
891011121314
15161718192021
22232425262728
293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。