スクラム研修用snsppoiアプリケーションの開発環境周りについて
※最低限開発に必要なもの
Java8
maven3
Docker
Docker Compose
IntelliJ
Dockerで起動するだけならDocker,Docker Composeだけで問題ありません。 各種必要なものは、現行の公式ドキュメントを参照してください。
IntelliJを前提とする
$ git clone git@github.com:bizreach/scrum-training.git
でリポジトリをclone- IntelliJ起動画面で、Import Projectを選択する
- cloneしたリポジトリのrootでpom.xmlを選択する
Import Maven project automatically
とAutomatically download
にチェックをいれるNext
を選択com.scrum.snsppoi:0.0.1-SNAPSHOT
がデフォルトで選択されているのでそのままNext
を選択- JDKは1.8を選び
Next
を選択(なければJavaをインストールしておいてください) Project name
Project file location
はデフォルトのままFinish
- このプロジェクトではCucumberTestでシナリオのテストを実行しています
- Chrome + Selenium + CucumberでのE2Eテストとして実行
- Chromeを入れていない場合はダウンロード
- ChromeDriverをダウンロード、自分が使っているバージョンに合わせること(最新化されているなら最新のもので大丈夫かと)
https://sites.google.com/a/chromium.org/chromedriver/downloads - DriverのZipを解凍し、
/usr/local/bin/
に移動させる
mv ~/driver_dir/chromedriver /usr/local/bin/
プロジェクトホームで $ sh ./test.sh
を実行する
※テストとApplicationでは使用しているDBが異なるので注意して実行してください
- テスト時:H2
- アプリケーション:MySQL
-
プロジェクトのroot(厳密にはdocker-compose.ymlのある階層)に移動する
ex.)$ cd ~/git/scrum-training
-
docker-composeでアプリケーションとMySQLを起動する
$ docker-compose up -d --build
設定ファイルなどがうまく反映されない場合は以下オプションを追記。
--no-cache
Dockerfileを修正した場合には上記コマンドを実行すること
Dockerで起動した際には
http://localhost:9000
で起動する
初回起動時はプロジェクトrootで以下を実行する
$ sh ./test.sh
$ sh ./init-db.sh
以下を実行する
$ sh ./init-db.sh
dockerでDBが立ち上がっていることが前提
$ docker ps
で、db
が起動していることを確認します。
起動していない場合は$ docker-compose up -d --build
で起動させてください。
STATUSがExitedになっていおらず、PORTSが 0.0.0.0:3306->3306/tcp, 33060/tcp
になっていればOKです。
IntelliJの Debug Application
、または Run Application
を実行します。
IntelliJで起動した際には
http://localhost:8080
で起動します。
- マイグレーションツールにはflywayを使用している
- flywayがおかしくなった場合にはこの項目を参照のこと
- データベース変更のマイグレーションの実行状態をデータベースで保持するので、既存のSQLファイルはいじらないこと
- データベース変更時は以下ディレクトリにSQLファイルを追加する
/scrum-training/src/main/resources/db/migration
- 命名規則があるのでそこに準じて変更をいれること
ex. )db/migration/V1.2__add-column-image-table.sql
たとえば現在がV1.2__hoge.sql
であれば、次はV1.3__gehe.sql
にする - DB変更SQLを追加したら、まずは
sh ./test.sh
を実行する - 失敗したら成功するまで修正して再度叩く
- 成功したら
sh ./migrate.sh
を実行する - バージョンの過去改変を行うとビルド環境への適用に影響するので、必ず積み上げでDBの変更を入れる
プロジェクトのrootに移動
$ cd ~/git/scrum-training
起動しているアプリを確認する
NAMESかCONTAINER IDを確認
$ docker ps
NAMESまたはCONTAINER IDを指定して以下コマンドを実行する
$ docker exec -it scrum-training_app_1 /bin/bash
$ docker exec -it b54 /bin/bash
コンテナのプロセスやログを確認してデバッグします
$ docker-compose logs
個別のserviceごとに見たいときは以下で確認できます
$ docker-compose logs app
$ docker-compose logs db
curlなどでアプリが応答するか確認します
curl http://localhost:9000
- データベース
- MySQL
- H2DB
- Flyway
- DB変更(マイグレーション)用
- テスト関連
- JUnit
- Cucumber