在阿里云容器服务上创建一个spring boot应用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

环境需求

  • 你喜欢的文本编辑器或者IDE
  • JDK1.8或以上版本
  • Maven3.0或以上版本
  • 如果你不是在linux操作系统上面做开发,你需要docker-toolbox来构建Linux的虚拟环境

第一步:创建一个spring boot应用

  • 下载并解压spring boot应用模板代码
    git clone https://github.com/spring-guides/gs-spring-boot-docker.git

cd gs-spring-boot-docker/complete

  • 编辑代码文件src/main/java/hello/Application.java使之包含以下内容

    package hello;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.bind.RelaxedPropertyResolver;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    @RestController
    public class Application {
    
        @RequestMapping("/")
         public String home() {
             return "Hello Docker World";
        }
    
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
    }
    AI 代码解读

@SpringBootApplication@RestController注解表示Java类Application已经准备好被spring MVC所调用,并提供HTTP服务。注解@RequestMapping("/")表示context path "/"的请求路由到方法home中进行处理,main方法中的SpringApplication.run()用来启动一个spring boot应用。

第二步:容器化spring boot应用

  • 首先需要构建一个docker镜像,通常使用Dockerfile来描述一个docker镜像的构建过程。
  • 一下是文件src/main/docker/Dockerfile内容

    FROM java:8
    VOLUME /tmp
    ADD gs-spring-boot-docker-0.1.0.jar app.jar
    RUN bash -c 'touch /app.jar'
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
    AI 代码解读
  • 使用docker-maven-plugin对docker 镜像进行构建,以下为需要修改pom.xml文件的部分

    <properties>
      <docker.image.prefix>registry.aliyuncs.com/linhuatest</docker.image.prefix>
    </properties>
    <build>
    <plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.2.3</version>
            <configuration>
                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                <dockerDirectory>src/main/docker</dockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>
    </plugins>
    </build>
    AI 代码解读

内容中指定了以下属性

  • 镜像的名称,此处为registry.aliyuncs.com/linhuatest/gs-spring-boot-docker其中registry.aliyuncs.com是阿里云镜像仓库的域名,linhuatest是用户的命名空间,gs-spring-boot-docker是用户某个仓库的名称,此处没有镜像tag,默认tag为latest。
  • Dockerfile文件所在的目录,该目录可以理解为Dockerfile的context,保存Dockerfile依赖的资源
  • 将何种资源拷贝到Dockerfile文件所在的目录,即context中,此处我们只需要编译出来的jar文件。
  • 构建和推送镜像到阿里云镜像仓库,执行下列命令

    $ mvn package docker:build # 此处必须要有docker客户端连接到docker daemon,方能构建
    $ docker push springio/gs-spring-boot-docker
    AI 代码解读

第三步:在容器服务控制台部署spring boot容器应用

  • 在阿里云容器服务控制台,指定一个集群,点击创建应用
    创建应用
  • 填写应用的描述信息,点击使用镜像创建
    填写应用描述信息
  • 点击选择镜像,从镜像列表中检索到镜像仓库gs-spring-boot-docker,点击勾选,点击确定
    选择镜像
  • spring boot应用默认暴露8080端口,填写端口映射中,容器暴露的端口为8080,此时其他容器可以通过对该容器的8080端口进行访问,但是服务还没有暴露到公网
    添加端口映射
  • 添加路由的容器端口为8080,域名前缀为spring-boot,最终生成的域名将为spring-boot.<cluster_id>.<region_id>.alicontainer.com,该域名提供给用户测试域名服务。点击创建并部署将创建和部署应用。
    添加公网路由
  • 应用成功创建和部署后,在服务列表中,找到服务spring-boot-demo_spring-boot-demo,点击进入服务详情页,访问端点即为该web服务对外暴露的网址。
    选择访问端点
  • 访问网址 http://spring-boot.c1c5ce5e58dcb492784470da517890f5b.cn-beijing.alicontainer.com ,得到页面相应如下
    访问页面
相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
2
1
3
5609
分享
相关文章
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
436 209
容器化浪潮下的AI赋能:智能化运维与创新应用
近年来,容器技术以其轻量、高效、可移植的特性成为云原生时代的基石,推动应用开发和部署方式革新。随着容器化应用规模扩大,传统运维手段逐渐力不从心。AI技术的引入为容器化生态带来新活力,实现智能监控、自动化故障诊断与修复及智能资源调度,提升运维效率和可靠性。同时,AI驱动容器化创新应用,如模型训练、边缘计算和Serverless AI服务,带来更多可能性。未来,AI与容器技术的融合将更加紧密,推动更智能、高效的运维平台和丰富的创新应用场景,助力数字化转型。
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
本次分享的主题是阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手,由阿里云两位工程师分享。
231 0
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
237 5
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
156 4
深入理解容器化技术及其在微服务架构中的应用
深入理解容器化技术及其在微服务架构中的应用
250 1
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
216 0

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等