在 Docker 环境中启动 Spring Boot WEB 服务
使用 Docker 环境启动 Spring Boot WEB 服务。
目标 or 目标意义
在Docker环境中启动Spring Boot WEB服务,以加深理解。
能够实现
我会在本地的Ubuntu Docker环境(Docker Desktop)上部署和启动Spring Boot WEB应用程序的Docker镜像。
開发环境
-
- Windows 11 Home 22H2 を使用しています。
WSL の Ubuntu を操作していきますので macOS の方も参考にして頂けます。
> wsl –version
WSL版本:1.0.3.0
内核版本:5.15.79.1
WSLg版本:1.0.47Ubuntu
$ lsb_release -a
没有可用的LSB模块。
发行商ID:Ubuntu
描述:Ubuntu 22.04.1 LTS
发布:22.04
Java JDK ※ 最小配置Java JDK的安装和Hello World!
$ java -version
openjdk version “11.0.17” 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu222.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu222.04, mixed mode, sharing)
Maven ※ 最小配置Maven的安装和Hello World!
$ mvn -version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.17, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Docker Desktop
版本4.16.3(96739)
$ docker –version
Docker版本20.10.22,构建3a2c30b
$ docker-compose –version
Docker Compose版本v2.15.1
※ 此篇文章主要介紹在 Ubuntu 的終端機上進行操作的基本知識。
展示“Hello World”的步骤。
创建Spring Boot WEB服务
请参考最简单的 Spring Boot WEB 服务的”Hello World!”例子。
将项目文件夹切换到
※ 我们将~/tmp/hello-spring-boot设为项目文件夹。
$ cd ~/tmp/hello-spring-boot
建筑
建造
※ 将会创建 target/app.jar。
$ mvn clean install
创建Docker镜像
使用Spring Boot命令创建镜像。
$ mvn spring-boot:build-image \
-Dspring-boot.build-image.imageName=app-hello-spring-boot
※以下, 使用Dockerfile的陈旧方法
$ vim Dockerfile文件内容
FROM adoptopenjdk/openjdk11:jdk-11.0.11_9-alpine-slim
WORKDIR /app
COPY target/*.jar app.jar
ENTRYPOINT [“java”,”-jar”,”app.jar”]
创建Docker镜像
$ docker build -t app-hello-spring-boot .
确认
$ docker images | grep app-hello-spring-boot
app-hello-spring-boot latest 0c8844339bfb 43 years ago 262MB
我成功创建了一个名为app-hello-spring-boot的Docker镜像。
编写一个 docker-compose.yml 文件
$ vim docker-compose.yml
文件的内容 de
version: '3'
services:
app:
image: app-hello-spring-boot
ports:
- "8080:8080"
目錄和文件結構
$ tree -I test -I target
.
├── Dockerfile
├── HELP.md
├── docker-compose.yml
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
└── main
├── java
│ └── com
│ └── example
│ └── springboot
│ ├── SpringbootApplication.java
│ └── controller
│ └── DataController.java
└── resources
├── application.properties
├── static
└── templates
在Docker环境中启动。
确认 Docker Compose
$ docker-compose --version
Docker Compose version v2.15.1
启动容器
$ docker-compose up -d
[+] Running 2/2
⠿ Network hello-spring-boot_default Created
⠿ Container hello-spring-boot-app-1 Started
检查Docker桌面版发现已作为容器启动。
通过Web浏览器进行确认
如果在8080端口上出现404 – 未找到错误,可能是使用了8080端口(例如,存在相关残余或其他情况)。
http://localhost:8080/api/data
我可以在WEB浏览器上看到{“message”:”Hello World!”}的显示,并成功获取到JSON数据。
或者通过不同的终端命令进行确认。
$ curl -X GET http://localhost:8080/api/data
{"message":"Hello World!"}
总结
-
- Ubuntu の 最小構成の Java 開発環境で Spring Boot WEBサービスを Docker 環境にてコンテナとして起動させることが出来ました。
-
- 次のステップとして構成にリバースプロキシを加える設定に続きます。
- さらに次のステップとしてKubernetes 環境での起動を試すことも出来ます。