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

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

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

环境需求

  • 你喜欢的文本编辑器或者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 ,得到页面相应如下
    访问页面
相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2天前
|
前端开发 IDE Java
构建一个基于React和Spring Boot的简易聊天室应用
构建一个基于React和Spring Boot的简易聊天室应用
8 0
|
2天前
|
弹性计算 Kubernetes 监控
【阿里云弹性计算】阿里云 ECS 与 Kubernetes 集成:轻松管理容器化应用
【5月更文挑战第28天】阿里云ECS与Kubernetes集成,打造强大容器管理平台,简化应用部署,实现弹性扩展和高效资源管理。通过Kubernetes声明式配置在ECS上快速部署,适用于微服务和大规模Web应用。结合监控服务确保安全与性能,未来将深化集成,满足更多业务需求,引领容器化应用管理新趋势。
16 2
|
4天前
|
弹性计算 安全 微服务
【阿里云云原生专栏】容器网络技术前沿:阿里云Terway网络方案详解
【5月更文挑战第26天】阿里云Terway是高性能的容器网络方案,基于ECS的ENI实现,提供低延迟高吞吐的网络服务。它简化网络管理,实现安全隔离,并与阿里云服务无缝集成。Terway由CNI、Node和Controller组成,适用于微服务、混合云和多租户环境,为企业数字化转型中的复杂网络需求提供强大支持。
156 1
|
7天前
|
Java 关系型数据库 Docker
docker打包部署spring boot应用(mysql+jar+Nginx)
docker打包部署spring boot应用(mysql+jar+Nginx)
|
8天前
|
Java Maven Docker
Docker化Spring Boot3应用:从镜像构建到部署
本文介绍了如何在Linux上通过命令行构建和运行Spring Boot 3服务的Docker镜像。首先,基于Ubuntu创建包含JDK 21的基础镜像,然后使用Maven打包Spring Boot应用。接着,构建服务镜像,将应用和依赖添加到镜像中,并设置工作目录和暴露端口。最后,利用docker-compose部署服务,挂载宿主机目录以方便更新静态文件。Docker简化了应用部署,确保了不同环境的一致性。
57 2
Docker化Spring Boot3应用:从镜像构建到部署
|
9天前
|
弹性计算 Kubernetes Cloud Native
【阿里云弹性计算】阿里云ECS与容器技术融合:打造敏捷的云原生基础设施
【5月更文挑战第21天】阿里云ECS结合容器技术(如Docker和Kubernetes),助力企业构建敏捷云原生基础设施。ECS提供高性能服务器,支持容器快速部署和自动化管理,实现应用的高可用性和可维护性。通过二者协同,企业能打造高效、可扩展的应用,加速数字化转型。示例代码展示了在ECS上使用Docker和Kubernetes部署云原生应用的过程。
59 3
|
9天前
|
Cloud Native Java 关系型数据库
【阿里云云原生专栏】构建云原生应用:基于Spring Boot与阿里云服务的全栈指南
【5月更文挑战第21天】构建云原生应用是企业数字化转型的关键,本文提供了一份基于Spring Boot和阿里云的全栈指南。涵盖从阿里云账号注册、ECS与Docker搭建,到Spring Boot项目创建、业务代码编写和部署。此外,还介绍了如何集成阿里云OSS存储、RDS数据库服务以及ACK容器服务,助力打造高效、可扩展和易管理的云原生应用。
133 3
|
10天前
|
存储 弹性计算 Kubernetes
【阿里云云原生专栏】深入解析阿里云Kubernetes服务ACK:企业级容器编排实战
【5月更文挑战第20天】阿里云ACK是高性能的Kubernetes服务,基于开源Kubernetes并融合VPC、SLB等云资源。它提供强大的集群管理、无缝兼容Kubernetes API、弹性伸缩、安全隔离及监控日志功能。用户可通过控制台或kubectl轻松创建和部署应用,如Nginx。此外,ACK支持自动扩缩容、服务发现、负载均衡和持久化存储。多重安全保障和集成监控使其成为企业云原生环境的理想选择。
169 3
|
10天前
|
运维 Cloud Native Serverless
【阿里云云原生专栏】阿里云云原生实践:从容器化到Serverless的无缝过渡
【5月更文挑战第20天】本文介绍了如何在阿里云上实现从容器化到Serverless的平滑过渡。首先,通过阿里云容器服务(ACK)创建和管理容器集群,部署应用。接着,利用函数计算(FC)构建Serverless架构,编写和部署函数代码。最后,借助函数工作流(Fn)进行任务编排,实现容器化应用与Serverless应用的统一管理,从而提升应用弹性和可扩展性,降低运维成本,支持企业高效数字化转型。
239 3
|
11天前
|
运维 Kubernetes Serverless
阿里云容器服务
小陈在大刘的指导下学习Kubernetes,发现搭建和维护Kubernetes集群有一定难度。大刘建议小陈考虑使用阿里云的容器服务ACK,它基于Kubernetes,但进行了云原生优化,简化了集群管理和运维工作。ACK有三种形态:专有版、托管版和Serverless版。小陈认为ACK Serverless更适合,因为它无需运维,开箱即用,适合专注于业务开发。ACK Serverless基于弹性容器实例ECI,提供无服务器的容器运行环境,支持Kubernetes兼容,降低了使用门槛。

相关产品

  • 容器计算服务
  • http://www.vxiaotou.com