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

简介:
+关注继续查看

环境需求

  • 你喜欢的文本编辑器或者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服务器,运行该镜像。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
12天前
|
Kubernetes 网络协议 应用服务中间件
阿里云容器服务K8s基础入门(四)
阿里云容器服务K8s基础入门
113 0
|
12天前
|
弹性计算 Kubernetes Serverless
阿里云容器服务K8s基础入门(三)
阿里云容器服务K8s基础入门
87 0
|
12天前
|
弹性计算 Kubernetes 调度
阿里云容器服务K8s基础入门(二)
阿里云容器服务K8s基础入门
86 0
|
12天前
|
存储 Kubernetes 负载均衡
阿里云容器服务K8s基础入门(一)
阿里云容器服务K8s基础入门
99 0
|
18天前
|
存储 Kubernetes 文件存储
使用阿里云容器服务和容器网络文件系统搭建WordPress网站
本教程介绍如何通过阿里云容器服务ACK和容器网络文件系统CNFS搭建一个简单的弹性、高可用WordPress网站,使用CNFS回收站进行数据恢复,验证quota和CNFS在线扩容。
41 0
|
19天前
|
人工智能 Kubernetes Cloud Native
26场技术分享,阿里云容器服务负责人易立领衔带来容器、AI、Serverless、中间件最佳实践
26场技术分享,阿里云容器服务负责人易立领衔带来容器、AI、Serverless、中间件最佳实践
|
22天前
|
边缘计算 运维 Kubernetes
阿里云原生容器服务产品体系-阿里云边缘容器服务ACK@Edge介绍
阿里云原生容器服务产品体系-阿里云边缘容器服务ACK@Edge介绍
461 0
阿里云原生容器服务产品体系-阿里云边缘容器服务ACK@Edge介绍
|
22天前
|
安全 Cloud Native 双11
阿里云原生容器服务产品体系-阿里云容器镜像服务ACR介绍
阿里云原生容器服务产品体系-阿里云容器镜像服务ACR介绍
392 0
阿里云原生容器服务产品体系-阿里云容器镜像服务ACR介绍
|
22天前
|
Kubernetes Cloud Native 双11
阿里云原生容器服务产品体系-阿里云容器服务体系概述
阿里云原生容器服务产品体系-阿里云容器服务体系概述
400 0
阿里云原生容器服务产品体系-阿里云容器服务体系概述
|
24天前
阿里云容器服务 ACK 产品技术动态(202308)
阿里云容器服务 ACK 产品技术动态(202308)
相关产品
容器镜像服务
容器服务Kubernetes版
推荐文章
更多