STS環境とそれに紐づくMySQL環境を出来るだけ簡単かつ確実に渡せる方法はないかなと試行錯誤してみました。
というわけで、こんな感じに動かせるCRUDサンプルを仲間に渡したいと思います。
前提条件
以下の環境で動作確認しています。
- macOS Mojave 10.14.3
- git version 2.20.1
- openjdk 11.0.2 2019-01-15
- Homebrew 2.0.1
- Docker version 18.09.1, build 4c52b90
- mysql Ver 14.14 Distrib 5.7.23
- Spring Tool Suite Version: 4.1.1.RELEASE
TerminalでそれぞれVersion確認をしてみて、コマンド自体が見つからない場合はインストールをしてください。
# macos
sw_vers
# git
git --version
# openjdk
java --version
# homebrew
brew --version
# docker
docker --version
# mysql
mysql --version
# Spring Tool Suite
# GUIアプリです。 インストールした記憶がない場合は https://spring.io/tools からDLしてインストールしてください。
さっそく渡されてみましょう
# 作業フォルダを作成して移動します
mkdir -p ~/Documents/sample_sts_crud/
cd ~/Documents/sample_sts_crud
# STSプロジェクトを入手します
git clone https://gitlab.com/msrx9/sample_springboot_crud.git
# MySQL環境を入手します
git clone https://gitlab.com/msrx9/sample_docker_mysql.git
これで必要なものは揃いました。CRUDデモアプリを起動させてみましょう。
1. MySQLサーバを起動します
docker-composeコマンドを使ってMySQLサーバを起動します。
cd ~/Documents/sample_sts_crud/sample_docker_mysql
docker-compose up
MySQLサーバを停止するときは、CTRL + C
を打ち込んでください。
2. STSプロジェクトをインポートして実行
File > Import を選択。
Maven > Existing Maven Projects を選択。
Root Directoryに先ほど git clone したパスを選択。
私の場合ですと /Users/msrx9/Documents/sample_sts_crud/sample_springboot_crud
になります。
プロジェクトを右クリックして Run As > 9 Spring Boot App を選択。
アプリが起動します。
ブラウザでみてみましょう。
ブラウザで http://localhost:8080 にアクセスしてみましょう。
こんな感じの画面が表示できたら無事に移植完了です。
やってみてよかったなと思った点
-
STSプロジェクトのapplication.ymlの内容とDockerで起動させるMySQLが確実に対応が取れるので、よく陥りがちなDBコネクトエラーが起きない。
-
全部Gitにコミットしてるので、渡された人もバージョン管理の恩恵を受けることが可能。初学者にありがちな「どこを変更したかわかりません」が減らせれるはず。
やってみて残った疑問
-
dockerの起動の部分をSTS側から制御できないものだろうか。CUIに慣れていない人に都度Terminalでコマンドを打たせるのも間違いの元になるため。
-
jdkやmysql-client等もDockerで仮想化してみたかったがよくやり方がわからなかった。
- vagrantでひとまとめにするしかない?
- STSの起動にも必要だし、流石にjdkとかはローカルにインストールした方がよい?
-
macOSならこの手順でいけるけど、Windowsの場合はVirutalBoxとDockerが競合するので、Vagrant+Dockerの形に手順を作り直すしかない? せめて、再起動なしでHyper-VのON/OFFを切り替えられたらなぁ。