spring boot docker 開発環境 16

Sales8開発の裏話とか、表の話とか。あと、時々プライベートなことも書いてます。, 何を隠そう java が好きじゃないんです。 Node.js環境構築(Windows版) 2019.03.08 Go言語 環境構築(Windows版) 2019.03.08 Python環境構築(Windows編) 2018.10.29 Spring環境構築(Windows版) 2018.10.15 Spring環境構築(Windows版) STSのインストール 2018.10.15 Python環境構築 Anacondaインストール 2018.06.13 Javaサーバーサイド環境構築(Mac版) Tomcatの設定 2017.09.05 docker container run -v $(PWD)/sql:/docker-entrypoint-initdb.d -d -e MYSQL_DATABASE=mydb -e MYSQL_USER=sboot -e MYSQL_PASSWORD=sboot -e MYSQL_ROOT_PASSWORD=root-pass -p 3306:3306 -d mysql, SpringBootはビルド、ライブラリ管理にgradleを使っているそうです。 しかも、Docker Hub には公式からすでに openJDK のセットアップ済みイメージが公開されているので、pull してくるだけで java な環境の出来上がりです。便利!! インストールが完了したらVSCodeをReloadします。 作成するにあたって、以下の記事を参考にしました。, SpringBootわけわからんおじさんなので、準備としてローカルでRestApiを作ります, mysqlのコンテナに必要なデータを入れて立ち上げとく。これをしないとテストも通らない為ビルドができない。 今回は環境構築がメインなので割り切る。, src/main/resources/application.ymlを作成する。 What is going on with this article? SpringBoot公式の内容を参考にして、docker-compose.ymlに全てを定義していきます。 以下のような設定のまま OK を押して閉じます。 背景 . 好きじゃないから自分のプライベートな PC に JDK とか入れたくないし、eclipseも入れたくない。 1行目でデータの永続化を2行目でデータベース初期処理を設定しています。, 今回のサンプルアプリで使用するテーブルとデータを用意していきます。 What is going on with this article? 最近の記事. build.gradle に追記するのでコピーしておきます。, 再度 docker-comose up して、待ち受ける状態になっていることを確認する。, Application.java の Hello World にブレークポイントを置いて というわけで、家では docker コンテナに java を入れて、VSCode から Remote Development Extension でつないで開発することにしました。 それなら、JDK のバージョンも自由に切り替えられるし、ホスト環境は java と無関係でいられます。 Spring Boot の Docker コンテナと MySQL の Docker コンテナの接続 開発環境は以下の通り 1. | コンテナ起動時に必要なことは以下の通り, これらを加味すると以下のようなコマンドになる そこで、Dockerを使ってテンプレート化できなかと考えて、共有するためにこの記事を書こかなと思います。 目標はSpring Bootで WEBアプリ開発. ※ ここの Command line arguments for remote JVM にかかれているコマンドを Help us understand the problem. ① Docker内でSpring BootをGradleでビルド&実行. ここら辺は参考記事をコピっただけなのであまり理解はしていない。 まず、VSCodeを起動してアクティブバーから「Remote Explorer」ビューを開き、先程起動したJavaコンテナ(コンテナ名sb)を選んで開きます。 ubuntu:~/environment/sample_java $ docker build -t SpringBoot:1 .invalid argument "SpringBoot:1" for "-t, --tag" flag: invalid reference format: repository name must be lowercaseSee 'docker build --help'.ubuntu:~/environment/sample_java $ docker build -t springboot:1 . を表示させるところまで。 Reloadしたらアクティブバーから「SQLTools」ビューを開き、「PostgreSQL」の接続情報を追加します。 プロジェクトに参加して開発環境を整える作業ってだいたい似たようなことをしますよね。 下記では今回のディレクトリ構成を示しています。, 下記の図がdocker-compose.ymlで定義する今回のDockerコンテナの構成です。, それでは、早速、docker-compose.ymlを用意します。 なんで? という話は今回はどうでもよくて、とにかく java が好きじゃないということなんです。 VSCodeと「Remote Development」拡張はインストール済み。 Docker Desktop for Windowsもインストール済み。バージョンは以下の通り。, docker-compose.yml の隣にinit_dbフォルダを作って中にはDBの初期化用SQLを置いておきます。, 公式のPostgreSQLイメージでは/docker-entrypoint-initdb.dディレクトリに置かれたsqlファイルはコンテナ起動時に1回だけ実行されることになっています。 けど、buildをローカルでやってるのでなんだかなという感じ、buildもコンテナにやらせた方が良いのでは?とも考えている。 ディレクトリトップにあるbuild.gradleファイルを以下のように編集します。, dependenciesのとこに必要なライブラリを記入すれば良いらしい便利。 IntelliJ を持っていても、上記 zip ダウンロードして読み込むほうがいいのかも… docker-compose を使う理由は、今後ここに MySQL や nginx なども建てる予定のため。, 起動されることを確認し、再度 http://localhost:8080 が表示されることを確認。, spring-boot-devtools を利用しているので、HotDeploy が適用されています。 データが取得できたので、JavaコンテナからDBコンテナにアクセスできることが確認できました。, 今回はDBコンテナとJavaコンテナを作成し、JavaコンテナからDBコンテナを利用できるところまで確認しました。 !とかだとこの案は却下, まずは、dockerが必要なのでmacに公式サイトからダウンロードしてインストールします。, https://docs.docker.com/docker-for-mac/install/, 一応ファイルに記述したかったのでvimをインストール。osはdebianなのでaptが使える。(centOSのyumと同じパッケージ管理ツール), dockerで作成した仮想環境[コンテナ]にローカルからフォルダを送信するには、docker cpを使います。scpのdocker版。, 一応開発環境はこれで整ったのですが、フォルダを送信やファイルへの変更をいちいちコマンドでやるのは大変です。, フォルダを送らないといけない・・・時間かかったり、送れたかの確認がコマンドでしかないので面倒。, macのフォルダと共有させて、コード編集やファイル管理はmac上、コンパイルはdockerコンテナでやればよさそう。, macにdockerをインストール。https://docs.docker.com/docker-for-mac/install/, runするときに-v /path/to/macFolder:/path/to/dockerContainerFolderをつけると、macにあるフォルダとシェアさせるこができる。(正確にはホストのディレクトリをマウントする), macの~/Documents/javatestにTest.javaのファイルをエディタで作成し設置。, macで削除したファイルがdocker上で消えるか確認。一応コマンドから実行(finder上で移動・削除しても一緒)。, 動いてるdockerを確認する。他にも[CONTAINER ID]の確認とかに使う。, javaの実行環境だけだったら、dockerとローカルマシンに共有フォルダを作成するだけでめっちゃ簡単になった。, yabu_swさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog SpringBootアプリからDB接続するためDBが先に立ち上がっている必要があります。, volumes ブラウザをリロードすると変更した文字になっているのを確認できます。, 開発する上でブレークポイントとか置いて止めたいので、リモートデバッグの設定をします。 次回 はJavaコンテナ内でSpring Boot環境を作ります。 ビルドがうまくいったので次はアプリケーションをコンテナ化し実行できるようにする。, 次にdb,app,phpmyadminコンテナを組み合わせたdocker-compose.ymlを記載する, docker-compose upで実行できる。初回はDockerファイルからイメージを作成する必要があるので--buildオプションをつけると良い。 それと今はemacsベースで開発してるけど、今後eclipseなどの統合開発環境で開発するときにはうまく組み合わせる必要があるなってかんじです(ここらへんのノウハウもない)。 これをたたき台に試行錯誤していこうかなと思います。. ② ①で成功したコマンドをDockerfileに追記してdocker run Why not register and get more from Qiita? Docker:17.09.0 Spring Boot:1.5.7 開発環境:Spring Tool Suite 3.9.1.RELEASE. でも、さすがにそれだけでは面白くないので、Spring Boot で WEB アプリを開発する環境を作ることにします。 Spring環境構築(Windows版) STSのインストール 2018.10.15 Python環境構築 Anacondaインストール 2018.06.13 Javaサーバーサイド環境構築(Mac版) Tomcatの設定 2017.09.05 コンテナを立ち上げ実行ができたら curlコマンドで確認する。, SpringBootの知識はないまんだがコンテナを使うことで簡単に環境構築することができた。 ブログを報告する. それなら、JDK のバージョンも自由に切り替えられるし、ホスト環境は java と無関係でいられます。 By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. ここらへんもあとで詳しく学びたい。, DBにたいおうするEnttityとRepositoryをsrc/main/java/com/exampleに作成する。 Copyright © CyberAgent, Inc. All Rights Reserved. さらに、DBは別コンテナに PostgreSQLを入れてつなぐことにします。(PostgreSQLも公式からコンテナイメージが公開されてます。), OSはWindows10です。 By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. でも、ここ数ヶ月間は仕事で久しぶりに java を触っているので、少しは勉強しなきゃなぁとも思うわけで。 Why not register and get more from Qiita? もじゃ(@s10akir)です。paizaラーニングでプログラミング学習動画制作のアルバイトをしている専門学生です。以前こんな記事を書かせていただきました。paiza.hatenablog.com今回は、VSCodeとDockerを使って簡単に開発環境を構築する方法について書いてみたいと思います。 "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}", 'org.springframework.boot:spring-boot-starter-web', "org.springframework.boot:spring-boot-starter-data-jpa", "org.springframework.boot:spring-boot-starter-data-rest", 'org.springframework.boot:spring-boot-starter-test', org.hibernate.dialect.MySQL5InnoDBDialect, JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64, JAR_TARGET "boot-get-started-0.0.1-SNAPSHOT.jar", # set entrypoint to execute spring boot application, ["sh","-c","java -jar -Dspring.profiles.active=docker build/libs/${JAR_TARGET}"], "http://localhost:8080/api/profile/users", Spring Boot の Docker コンテナと MySQL の Docker コンテナの接続, APPコンテナはDockerFileを作成しファイルをマウントすることで、ビルドする度に新たにimageを作成する必要を無くす, you can read useful information later efficiently. Java 11 と gradle を使います。, Hello World! OS: macOS High Sierra 2. docker: 17.12.0-ce 3. docker-compose version 1.18.0 今回の記事のソースはこちら 1. PostgreSQLをDBに選んだのはHerokuを意識したからで深い理由はありません。, SpringBootとPostgreSQLの開発環境をdocker-composeで用意していく入門記事です。 すると、先月まで触ってたプログラムは動かなくなったりして。。 少し前の記事(DockerでjavaのWeb環境構築 - ドン底から這い上がる学習記録)でdockerにjavaのWeb環境を作成したので、次はGradleとSpringBootの開発環境構築をする。, FROM alpine:3.10RUN apk updateRUN apk add openjdk8RUN apk add curl, docker buildを実行したけど、イメージ名が小文字じゃないとだめとエラーが出たので小文字にして実行。. 少し前の記事(DockerでjavaのWeb環境構築 - ドン底から這い上がる学習記録)でdockerにjavaのWeb環境を作成したので、次はGradleとSpringBootの開発環境構築をする。この記事の目標. プロファイルの切り替えはDockerFile内で行う(後述), mysqlコンテナを立てた状態でgradlew buildをして、BUILD SUCCESSFULが出ればOK。 試してみましょう。 Docker for Mac 2.1.0.5 数秒後に Java が再起動されるのが確認できます(docker-compose up のログから) public class Application { の横にある実行ボタンを押す。, dependencies に色々入れすぎて無駄に動いているので、コメントアウトが必要です。, これで再度実行 Java11+Spring Boot+Dockerで作るWebアプリケーション . parallelsによる仮想開発環境から無料で開発できる環境に置き換えたい、といわれたのでdockerでできないか調べてみました。, javaの環境(image)が用意されているので、jdkやosのインストールが不要。手間が省ける。, ただcentOSではなくDebian系のosなので、絶対centOS!!! SpringBootアプリでDB接続の確認まで記事に書いていきます。, また、一つの記事にしてしまうと長いので、上下に分けて記事を書いていきます。(この記事は上です!), この記事ではソフトウェアのインストールは省略した手順となります。 起動します。, docker-compose では何も指定しない場合、作成したコンテナはデフォルトの仮想ネットワークに参加した状態になり、サービス名(今回の例ではdbやjava)をホスト名として名前解決することになります。 また、javaコンテナはDBコンテナを利用するのでdepends_onにDBコンテナを指定しています IntelliJ IDEA Ultimate 2019.3.1 ubuntu:~/environment/sample_java $ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEspringboot 1 9d36d8bf12cd 4 seconds ago 108MBalpine 3.10 965ea09ff2eb 2 months ago 5.55MB, ubuntu:~/environment/sample_java $ sudo docker run -it springboot:1/ #, / # wget https://services.gradle.org/distributions/gradle-6.1-rc-1-all.zip/ # unzip gradle-6.1-rc-1-all.zip/ # mv gradle-6.1-rc-1 /usr/local/bin// # echo 'export PATH=$PATH:usr/local/bin/gradle-6.1-rc-1/bin' > ~/.profile/ # source ~/.profile, / # gradle -v------------------------------------------------------------Gradle 6.1-rc-1------------------------------------------------------------Build time: 2019-12-19 21:56:43 UTCRevision: 091da954cc24262bb056965f70f172e1e587e9caKotlin: 1.3.61Groovy: 2.5.8Ant: Apache Ant(TM) version 1.10.7 compiled on September 1 2019JVM: 1.8.0_222 (IcedTea 25.222-b10)OS: Linux 4.15.0-1056-aws amd64, 環境変数にパスが通っていることを確認したので、作業フォルダ内でjavaプロジェクトを作る。, / # cd ~/myApp~/myApp # gradle init --type java-application/bin/sh: gradle: not found, →とりあえず解決できないので、Alpineはサヨナラしてubuntuで作ることにする。, 仕事で躓いた技術や、プライベートでの開発でハマった事を中心に技術メモを書いてきます!, RSmanさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog Help us understand the problem. それでは、各sqlの解説にうつっていきましょう!, アプリで使用するusersテーブルを作成します。今回は、プライマリキーの他に名前のフィールドがあるシンプルな作りです。, アプリから使用するDBユーザを作成していきます。CRUD操作のみを許可しています。, publicはpostgresのデフォルトスキーマです。特にスキーマを指定しない場合、全てpublicスキーマにテーブルが作られます。, お疲れ様でした!開発環境の下地ができたって状態です! あたりで、EC2上に環境整えていて、Dockerのコマンド群をなんとなく理解していること。 元ネタ. More than 1 year has passed since last update. アプリケーションをローカルで実行する場合と、コンテナ上で接続する場合とでは接続先が変わることに注意する。, localhost、dockerに対応するプロファイルを作りlocalhostをデフォルトにする。 dbコンテナが立ち上がってからappコンテナが立ち上がるように設定しています。 なので、ホスト側のフォルダを ボリューム バインドマウントしておいてそこに初期化用のSQLを置いておくわけです。, テーブルの初期化が確認出来たら、PostgreSQLをquit、シェルもexitして、コンテナは消しておきましょう。, javaコンテナは起動し続けるようにtty: trueを指定しています。 コンテナ上でSpringBootアプリのjarを操作できるように設定しています。, entrypoint Spring Boot での Java 開発環境を Docker で構築します。 db → dev → public → tablesの順に開き、namesで右クリックして、Show Table Recordsを選択します。 ポイントはServer hostにdocker-compose.ymlで定義したDBコンテナのサービス名を指定することです。 testCompileのとこで多分テストもしてくれてるうれしい。 Javaのフレームワークで、最近の流行りとしてSpringBootが挙げられます。 SpringBootとは、Spring Frameworkに様々な機能を組み込んだフレームワークです。 JavaのフレームワークとしてStrutsと呼ばれるフレームワークもありますが、 Strutsと比較して導入が容易に行うことができます。

楽天トラベル 地域共通クーポン 紙, 嬉しく思う 敬語 類語, Google Drive File Stream とは, 自転車スタンド 自作 イレクター, エクセル ウィンドウサイズ 変更できない, 損保ジャパン 支払い 渋る, 富士吉田 歴代 市長, 通帳 記帳しないと ゆうちょ, トマト缶 パスタ なす, Ddタープ 4x4 パップテント, クリスタ フォント デフォルト おすすめ, スマホ 画面サイズ 比率, ハムスター 遊び道具 手作り ダンボール, タクシー カード 手数料 裁判, ふくらはぎ マッサージ機 ローラー, テアトルアカデミー オーディション 中止, 会津 田島 駅 から浅草 駅 時刻表, ホンダドリーム オイル交換 料金, Iphone Sdカード バックアップ, ソフトバンク 法人 メール設定, Aquos 再起動 Pin, パソコン 仕事 アプリ, ネイティブキャンプ 評判 初心者, Powershell ネットワークドライブ パスワード, 面接 間 を おく, 大学生 留学 いつ, タイ語 アルファベット 音声, Xperia So-41a スクリーンショット 保存先, アメーバ Id 見られる, ティーン 効果音 ?, 新卒 二次募集 2021,

Leave a Reply