在 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(Microsoft Store应用版)
> 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的陈旧方法

创建Docker文件
$ 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 環境での起動を試すことも出来ます。
广告
将在 10 秒后关闭
bannerAds