在阿里云容器服务上创建一个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);
        }
    
    }

@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"]
  • 使用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>

内容中指定了以下属性

  • 镜像的名称,此处为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

第三步:在容器服务控制台部署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搭建和管理企业级网站应用
相关文章
|
4月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
259 1
|
27天前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
68 6
|
1月前
|
Java 应用服务中间件 API
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
41 5
|
3月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
172 62
|
3月前
|
JSON 安全 算法
Spring Boot 应用如何实现 JWT 认证?
Spring Boot 应用如何实现 JWT 认证?
110 8
|
3月前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
87 1
|
4月前
|
JSON Java 网络架构
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
这篇文章介绍了如何使用Spring Boot整合REST方式来搭建和操作Elasticsearch服务。
176 4
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
|
3月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
233 2
|
3月前
|
前端开发 Java Docker
使用Docker容器化部署Spring Boot应用程序
使用Docker容器化部署Spring Boot应用程序
|
3月前
|
Java Docker 微服务
利用Docker容器化部署Spring Boot应用
利用Docker容器化部署Spring Boot应用
74 0

相关产品

  • 容器计算服务