O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017

9.817 visualizações

Publicada em

Goal
* Docker使って Java EE 開発環境のセットアップを楽にする
* JavaエンジニアをとりあえずDockerに入門させ、コンテナ開発/運用時代に備えてもらう

Publicada em: Engenharia
  • Login to see the comments

Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017

  1. 1. Dockerではじめる Java EE アプリケーション開発 for JJUG CCC 2017 Fall • 齋藤 耕平 (さいとう こうへい) • Twitter : @SightSeekerTw (https://twitter.com/SightSeekerTw) • Qiita: SightSeekerTw (https://qiita.com/SightSeekerTw) • GitHub: sightseeker (https://github.com/sightseeker) • この部屋のハッシュタグ: #ccc_m6
  2. 2. Goal •Docker使って Java EE 開発環境の セットアップを楽にする •JavaエンジニアをとりあえずDockerに入門 させ、コンテナ開発/運用時代に備えてもらう • IDE(統合開発環境) の話はしません • 実は Java EE っぽい話はあまりない • マイクロサービスの話もしません • DevOpsの話も出てきません
  3. 3. Story •エンジニアのPC(開発機)はだいたい1台/人 •担当するプロジェクトが変わる度に 使うツールが変わる • JDKのバージョンが変わる • 使うアプリケーションサーバが変わる • 使うDBMSが変わる •いちいち入れ直したり、複数バージョンの 共存を考えたりしなきゃいけない
  4. 4. 😣 つらい。。
  5. 5. とりあえず 開発機 (PC) に Docker 入れましょう • Docker CE for Mac • https://store.docker.com/editions/community/docker-ce-desktop- mac • Docker CE for Windows • https://store.docker.com/editions/community/docker-ce-desktop- windows
  6. 6. どんな開発環境を作るか • Gradle (最新版) with OpenJDK 8 ビルド環境 • WildFly 10.1.0.Final デプロイ環境 (Java EE サーバ) • MySQL 5.6 データベース
  7. 7. 百聞は一見にしかず (Demonstration) ブラウザで http://localhost:8080/webapp にアクセス
  8. 8. 何が起こったか •コンテナの仮想ネットワークを構築 •Gradle のプロセスが起動するコンテナが起動 •WildFly が起動するコンテナを起動 •MySQL が起動するコンテナを起動
  9. 9. HostOS (macOS/Windows10/Linux) Docker 要はこういうこと /projec t ./ 0.0.0.0:8080 コンテナのディレクトリに ホストOSのディレクトリを マウント 0.0.0.0:3306 Deploy JDBC コンテナのTCPポートを ホストOSのTCPポートに バインド Docker 上に構築された仮想Network 8080 3306
  10. 10. Gradleのコンテナ • Gradleプロセスが動いてるコンテナが立ち上がってる • ホストOSのソースコードが配置されてる ディレクトリがマウントされてる • 今回 実行してる gradle のタスク • (ファイルの変更を検知して) • ビルド : warをパッケージ • デプロイ : cargoプラグインを使ってWildFly にデプロイ
  11. 11. WildFlyのコンテナ •WildFlyのプロセスが動いてるコンテナが起動 する • MySQL の JConnector をインストール済 • MySQL の コネクションプール 設定済 • WildFly の管理ユーザ 設定済 • コンテナイメージ https://hub.docker.com/r/sightseeker/wild fly-deployment-demo/ ※このコンテナイメージだけ自作してます
  12. 12. MySQLのコンテナ •MySQL 5.6 のプロセスが上がるコンテナ が起動する •WildFly のコネクションプールが参照す る •スキーマが作られてる •ユーザ/パスワードが設定されてる
  13. 13. コンテナはどこから来たのか?
  14. 14. コンテナはどうやってつくる? Dockerfile を作成 ビルドするとコンテナイメージというものが作られる docker run コマンドでイメージを指定すると起動する
  15. 15. Dockerfile •どういうコンテナイメージ なのかの定義 •この定義を使ってビルドすると コンテナイメージ ができる •作ったイメージを指定して run すると コンテナが起動する
  16. 16. 今回したWildFlyのDockerfile https://github.com/sightseeker/wildfly-deployment-demo
  17. 17. docker-compose •Docker公式 オーケストレーションツール •docker-compose.yml • どういう構成でコンテナをデプロイするのかの定義 •Desktop版以外ではオプション (Docker CE とは別にインストールが必要) • サーバ環境だと、Swarmモードか、Kubernetes あたり使うのが一般的?
  18. 18. Java エンジニア的にはこんな理解が良いかも Dockerfile クラス定義 (.javaファイル) イメージ コンパイルされたクラスファイル (.classファイル) コンテナ new して インスタンス化 した オブジェクト docker- compose.yml どんな引数でインスタンスをnewするか定義したもの
  19. 19. Story 2 •WildFly のバージョン変えたい
  20. 20. これまでの運用だったら • 運用メンバーのだれか • 新しいWildFlyのバージョンをダウンロード • ダウンロードしたWildFlyの設定を開発向けに設定を変更 • zipなどでアーカイブとしてまとめる • どこかのファイルサーバに配置 • 開発メンバーのみんな • 運用メンバーが作ってくれたアーカイブをダウンロード • ダウンロードしたアーカイブを展開 • 今までつかってたWildFlyを削除するか移動させる • デプロイの設定を変更したり
  21. 21. Demonstration •運用メンバーのだれか • Dockerfileに書いてある WildFlyのバージョンを変更する • 変更を GitHub にコミット •開発メンバーのだれか • 起動するコンテナのバージョンを変更する (docker-compose.yml)
  22. 22. Docker Hub は コミットトリガビルドしてくれる DockerHub Code Change & Commit Automated Builds
  23. 23. やってみて感じたこと • Java の IDE はまだ Dockerフレンドリーじゃない 本当はPCのIDEからコンテナにアタッチして プロセスを実行したい (gradle や mvnコマンドなど) (できると思うが、工夫が必要) • EclipseやNetBeansなどのGUIが起動するコンテナを立ち上げるとい う裏技も無くはないが。。。
  24. 24. Option
  25. 25. Mavenの場合 • Maven には Continuous Build の機構が無いので、 Watcher Plugin を使えば、ファイル変更をトリガにし て、パッケージ/デプロイができる • https://github.com/fizzed/maven-plugins
  26. 26. 作ったイメージを 共有するには • Docker Registry • Dockerのイメージを共有するために、保存しておくところ • Maven や Gradle のリポジトリのようなイメージ • Docker Hub • Docker社公式の、Docker Registry • 自分で Docker Registry を作ることもできる • Docker公式のRegistry (無償の Docker CE だと UI がない) • JFrog Artifactory Pro (有償) • Sonatype Nexus 3 (Free) • Atomic Registry (Free)
  27. 27. The End

×