カタカタブログスマートフォン用の表示で見るカタカタブログSIerで働くITエンジニアがカタカタした記録を残す技術ブログ。Linuxが中心です。数学やデータ分析なども。動作確認まとめはじめにかなり久しぶりのブログ記事。最近はDockerなどコンテナを触り始めており、いろいろ検証している。DBをつないだアプリをRailsもDBも両方ともDockerコンテナ上で起動させてみる。Windowsを入れて、WSL(Ubuntu)からコマンドラインで操作している。WSL機能でコードもターミナルもかなり快適に使えるようになったきた(が、このあたりは本題ではないので割愛する)。RubyやRails環境も構築済みとする。5.2.3Railsのサンプルアプリ作成まずはRailsのサンプルアプリを作成する。簡単にscaffoldで構築することにする。--database=postgresqlオプションも明示する。--database=postgresqlDB処理を持つ画面機能をscaffoldで実装する。email:stringさて、ここまででアプリはできているが、コンテナで扱う上でDB情報などは環境変数から渡せるようにしておくと便利。database.ymlを修正し環境変数で各種パラメータ値を取得するように修正する。続いてアプリ部分ができたのでインフラとしてのコンテナ部分を作る。Dockerfileとdocker-compose.ymlの二つのファイルを作成する必要があるが、いずれもRailsアプリプロジェクトのトップに直接配置する。Dockerfileを作成する。installするのみ。これだけだとDBマイグレーションとかはできないのが、そのあたりはコンテナでRailsとDBの両方が起動した後に別途実行する必要がある。"0.0.0.0"]Dockerfileができたので、さっそくビルドしてみる。tag名をrails-app:0.1と明示的に指定しておく。--no-cacheはコンテナイメージのキャッシュによりファイルを変更しても反映されない場合などに付与するとよい。directories.途中でaptやgemのインストールなどが正常に行われていることがログから確認できる。エラーなく終了すればコンテナビルドはOK。docker-compose.yml作成さて、先ほど作ったRailsアプリのコンテナイメージとPostgresSQLのコンテナイメージを両方起動するdocker-compose.ymlを作成する。RailsのDB接続情報もPostgresの各種DB情報も環境変数で渡せるようになっているので、以下のようにそれぞれに同じ値を設定する。DB_PASSWORD=passwordコンテナ起動コンテナの定義ができたので、さっそく起動してみる。done正常に起動できたよう。コンテナの状態も確認しておく。0.0.0.0:3000->3000/tcpちゃんとDBとWebの二つのコンテナが起動していることが分かる。ここで後回しにしていたDBマイグレーションを忘れずに実行しておく。=============================テーブルも問題なく作成できたよう。これでアプリとDBの両方の作成が完了した。最後に動作確認をしておく。Railsのトップページにアクセスする。http://localhost:3000Railsサーバのトップ画面が見れることが確認できた。続いて、DB機能をテストしてみる。以下のURLにアクセスしScaffoldで実装されたCRUD機能を動かしてみる。userでのデータ登録や一覧表示等のDB操作が正常にできることが確認できた!コンテナ上でRailsアプリが正しくコンテナ上のPostgreSQLと連携し、機能していることが確認できた。まとめRailsアプリをWebサーバ・DBサーバともにDockerによりコンテナ化し正常に動作するところまで確認できた。これでローカル開発するときもRailsやPostgresのインストールをせずともアプリ開発ができるし、コンテナをAWSのECSなどにデプロイすれば本番環境としても利用できる。コンテナ化によりアプリ開発や本番運用がますます簡単になってきているので、いろいろ検証して利用を進めていきたい。はてなブログPro東京のSIerで働くITエンジニアです。Linux、開発言語はJava、PL/SQL、bashが多いです。Piなどにも興味を持っています。最近は統計やデータマイニング、機械学習などの勉強も始めました。(1)月別アーカイブ検索スポンサーリンクスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。