使用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。
然后在”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