16
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Spring BootをDockerで動かす

Last updated at Posted at 2017-08-23

はじめに

この記事ではSpring BootをDockerで動かし,hello worldを表示させます.
Dockerは勉強中なので,間違いなどがあればコメントお願い致します.

環境

  • 言語
    • java8
  • ビルドシステム
    • maven

Springプロジェクトの作成

雛形のプロジェクトのDL

**こちら**から雛形を作成することが出来ます.

Dependenciesのところで,webdevtoolsを検索し,追加しましょう.
devtoolsを入れることで,ファイルが変更された時にコンパイルしてくれ,ブラウザをリロードするだけで表示に反映させてくれます.入れないと毎回mvnw spring-boot:run? mvn spring-boot:run? をし直さないとブラウザには反映されない・・・

その後,Generate Projectで雛形のプロジェクトのDLしましょう.

image.png

DLしたらzipを解凍し,好きな場所にプロジェクトを配置しましょう.

hello worldの記述

src/main/java/com/example/demo/DemoApplication.java(※プロジェクト名がdemoなので,ファイル名がDemoApplication.javaになった)を変更して,以下のようにします.

@RequestMapping("/")はWebのフレームワーク使ったことがある方は分かるかもしれませんが,URLのパスがルートの時,このアノテーションが付いているメソッドが呼ばれます.
つまり,http://localhost/にアクセスすると,public String home()が実行されます.
もし,@RequestMapping("/hoge")のアノテーションをつけたときは,http://localhost/hogeで実行されます.

src/main/java/com/example/demo/DemoApplication.java
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {

    @RequestMapping("/")
    public String home() {
        return "Hello Docker World";
    }
	
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

Dockerで動かすための設定

次にDockerで動かすためにdocker-compose.ymlを作成します.

docker-compose.ymlの作成

以下のdocker-compose.ymlを作成します.

volumesを.:/appとすることで,作業するホストPC(カレントディレクトリ)とDockerのコンテナ(/appディレクトリ)を共有することが出来ます.

で,commandを./mvnw spring-boot:runとすることで,Spring Bootのプロジェクトを起動しています.

docker-compose.yml
version: '2'
services:
    app:
        image: openjdk:8-jdk-alpine
        ports:
            - "8080:8080"
        volumes:
            - .:/app
        working_dir: /app
        command: ./mvnw spring-boot:run

プロジェクトを動かす

docker-compose.ymlがあるページで以下のコマンドを実行してください.
そうするとDockerのコンテナで今回作成したプロジェクトがビルドされ,実行されます.

オプション 備考
-d バックグランドで実行
コマンドライン
docker-compose up -d

ちょっと数分待てば,以下のようにhello worldが出来ると思います.
ipアドレスはdocker-machine ipで取得し,port番号は8080です.

image.png

Hello Docker Worldを修正して保存すると,少し時間たった後にブラウザをリロードすると,表示もかわると思います.
これは,Dockerコンテナとフォルダ共有しているのと,devtoolsを入れたのと,./mvnw spring-boot:runを実行しているおかげでこうなってます.〜

最後に

出来たものはGithubに公開しています〜
https://github.com/ferretdayo/spring-with-docker

これからDBの連携など色々していきたいと思います〜

16
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?