云原生之容器编排实践-SpringBoot应用Docker化

简介: 云原生之容器编排实践-SpringBoot应用Docker化

`5E3C]3H$FC(ES[2IT)0@KE.png

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情


背景


前面我们已经通过 IDEADocker 插件连接到了 Docker 服务。这里我们借助 DockerfileMaven 打包插件实现一键部署 Spring Boot 应用到远程 Docker 容器。


创建应用


  • 创建一个SpringBoot的空项目

略。。

  • 写一个简单的接口


package com.heartsuit.cloudnative.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
 * @Author Heartsuit
 * @Date 2022-08-22
 */
@RestController
@Slf4j
public class HelloController {
    @Value("${server.port}")
    private String port;
    @GetMapping("/hi")
    public String hello() {
        return "Hi " + port;
    }
    @GetMapping("/hello")
    public String hello(@RequestParam String name) {
        log.info("Parameter: {}", name);
        return "Hello " + name + ", I am on port: " + port;
    }
}
  • 编写Dockerfile

在项目根目录新增 Dockerfile 文件,写入以下内容。


FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

说明:


  1. FROM:基于openjdk8
  2. VOLUME:临时数据卷目录
  3. COPY:拷贝target目录下的jar,命名为app.jar
  4. ENTRYPOINT:配置启动命令
  • 增加打包插件 编辑 pom.xml ,在插件部分添加以下内容。


<plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <executions>
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <dockerHost>http://k8s0:2375</dockerHost>
                    <imageName>heartsuit/${project.artifactId}</imageName>
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                    </imageTags>
                    <forceTags>true</forceTags>
                    <dockerDirectory>${project.basedir}</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

Note:源码已上传 GitHubgithub.com/heartsuit/c…


运行容器应用


一种方式是,直接在打开的 Dockerfile 中,点击运行,会将应用直接在容器中部署启动。


W8TCLMSE[$5GW9FQ6DUXJSI.png

一键部署应用到容器


执行 mvn package 命令,或者通过 Maven 插件的 package 命令完成一键打包与部署到容器的操作。


If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

目录
相关文章
|
12天前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
国诚投顾携手阿里云,依托Serverless架构实现技术全面升级,构建高弹性、智能化技术底座,提升业务稳定性与运行效率。通过云原生API网关、微服务治理与智能监控,实现流量精细化管理与系统可观测性增强,打造安全、敏捷的智能投顾平台,助力行业数字化变革。
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
|
11天前
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
2月前
|
存储 监控 Java
如何对迁移到Docker容器中的应用进行性能优化?
如何对迁移到Docker容器中的应用进行性能优化?
198 58
|
14天前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
通过与阿里云深度合作,国诚投顾完成了从传统 ECS 架构向云原生 Serverless 架构的全面转型。新的技术架构不仅解决了原有系统在稳定性、弹性、运维效率等方面的痛点,还在成本控制、API 治理、可观测性、DevOps 自动化等方面实现了全方位升级。
|
2月前
|
缓存 Java Docker
如何对应用代码进行优化以提高在Docker容器中的性能?
如何对应用代码进行优化以提高在Docker容器中的性能?
177 1
|
30天前
|
安全 持续交付 Docker
Docker:重塑现代软件交付的容器引擎
Docker:重塑现代软件交付的容器引擎
|
30天前
|
存储 持续交付 Docker
Docker:轻量级容器技术重塑应用交付
Docker:轻量级容器技术重塑应用交付
|
30天前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
30天前
|
运维 测试技术 Docker
Docker:轻量级容器化技术革命
Docker:轻量级容器化技术革命