Help us understand the problem. What is going on with this article?

Spring BootをDockerで動かす

More than 1 year has passed since last update.

はじめに

この記事では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の連携など色々していきたいと思います〜

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away