使用Docker开始Spring Boot

当想要在Java的Spring Boot上进行Web应用开发时,我想顺便学习Docker并利用它来构建开发环境。

行动环境

    • OS: Mac OS X 10.12.6 x86_64 (macOS Sierra)

 

    • Gradle: 3.5.1

 

    • JVM: 1.8.0_152-ea

 

    Docker for Mac: Version 17.09.0-ce-mac35

Spring Boot 的实现

下载草稿

首先,在Spring Initializr中创建Spring Boot的模板。
1. 选择Gradle Project。
2. 将Group更改为hello(保持默认值也可以)。
3. 将Artifact更改为hello(保持默认值也可以)。
4. 在Dependencies中添加Web。

スクリーンショット 2017-10-11 15.42.42.png

然后在”Generate Project”中下载模板。

构建.gradle文件的更改

在应用程式的构建和依赖库管理中使用Gradle。
由于上述下载的模板中包含了一个名为build.gradle的构建脚本,所以我们要对其进行以下修改。

buildscript {
    ext {
        springBootVersion = '1.5.7.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'

jar {
    baseName = 'hello-world'
    version = '0.1.0'
}

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

如果您使用的是IntelliJ IDEA编辑器,它会自动帮您安装所需的库。
如果您没有使用它,请执行gradlew clean build。

HelloApplication.java的修改

将下载的模板中的src/main/java/hello/hello/HelloApplication.java文件按如下方式进行修改。

package hello.hello;

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 HelloApplication {

    @RequestMapping("/")
    public String home() {
        return "Hello World from Docker";
    }

    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }

}

确认操作

在这里先进行操作确认。
应该在build/libs目录下创建了jar文件。
请执行以下命令,确认是否输出了”Hello World from Docker”。

$ ./gradlew build && java -jar build/libs/hello-world-0.1.0.jar
$ curl http://localhost:8080

使用Docker进行环境设置

创建Dockerfile

当达到这一步时,将进行Docker环境设置。
如果尚未安装Docker,请从此处下载并安装。
在根目录中放置Dockerfile,并按照以下内容进行描述。

FROM openjdk:jdk-alpine
VOLUME /tmp
RUN mkdir /app
WORKDIR /app
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar build/libs/hello-world-0.1.0.jar" ]

docker-compose的配置 设置

我认为未来会出现分开管理应用程序容器和数据库容器的情况,所以我们将使用docker-compose。
将docker-compose.yml文件放置在根目录,并按照以下方式编写内容。

version: '2'
services:
    app:
        build: .
        image: tiqwab/boot:0.0.1
        ports:
            - "8080:8080"
        volumes:
            - .:/app

构建并启动docker镜像和容器。

现在准备工作已经完成,可以使用以下命令构建docker镜像并启动容器。

使用 Docker Compose 构建并启动容器。

请尝试在这种情况下访问http://localhost:8080/。
应该会显示出“Hello World from Docker”。

未来,可以通过下列命令启动容器等操作。

# 起動
$ docker-compose up -d

# 停止
$ docker-compose stop

通过使用Docker,我们能够轻松地构建Spring Boot的开发环境,如上所述。

请参考

    • Spring Boot with Docker な開発環境を考える

 

    Getting Started · Spring Boot with Docker
广告
将在 10 秒后关闭
bannerAds