Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
17
Help us understand the problem. What is going on with this article?
@ferretdayo

Spring BootをDockerで動かす

More than 3 years have 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の連携など色々していきたいと思います〜

17
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  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
ferretdayo
初心者です///
idom
自動車流通業界の常識を覆すビジネスに挑戦し、ITを活用して移動という手段に新たな価値を創出することをミッションとしています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
17
Help us understand the problem. What is going on with this article?