zoukankan      html  css  js  c++  java
  • 使用DockerCompose部署微服务项目(基于Springboot搭建一个简易计数器)

    准备Dockerfile

    FROM java:8 #基于jdk8的环境
    
    COPY *.jar /app.jar #拷贝所有的jar包到/app.jar目录下
    
    CMD ["--server.port=8080"] # 指定服务器端口
    
    EXPOSE 8080 # 暴露8080端口
    
    ENTRYPOINT ["java", "-jar", "/app.jar"] # 启动jar包
    
    

    准备docker-compose.yml

    version: '2.6' # 指定版本,这个版本是docker和docker-compose对应的版本
    services:
      customapp:
        build: . # 构建当前目录下的项目
        image: customapp # 镜像
        ports:
          - "8080:8080" # 端口
        depends_on:
          - redis # 依赖redis镜像
      redis:
        image: 'redis:alpine' # redis镜像,精简版
    
    

    然后搭建基于Springboot的微服务

    pom.xml文件如下

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    

    其中pom.xml文件中只引用了较少的依赖,包括redis和starter-web。用于搭建springboot项目

    application.properties其中内容

    server.port=8080 # 暴露端口
    # 为何这里指定redis的服务器时,使用的是“redis”,而不是类似于“localhost”那种服务器的信息。
    # 是因为部署在docker容器里面时,直接是引用的redis镜像。
    spring.redis.host=redis # 指定redis的服务器
    

    一个简单的计数访问页面controller

    package com.example.composedemo.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.annotation.Resource;
    
    /**
     * @Author: Xiong Feng
     * @Date: 2020/8/4 8:53
     * @Description:
     */
    @RestController
    public class HelloController {
    
        @Resource
        private StringRedisTemplate stringRedisTemplate;
    
        @GetMapping("/hello")
        public String Hello(){
            Long views = stringRedisTemplate.opsForValue().increment("views");
            return "Hello Docker Compose, you have views:"+views;
        }
    }
    
    

    这个Controller里面就简单引用了redis,并使用redis的缓存实现计数+1

    上面准备步骤做好之后,把springboot项目打包成一个jar包,将Dockerfile文件和docker-compose.yml文件,一起放入linux环境下的同一个目录

    然后再控制台执行命令

    docker-compose up --build
    

    出现如图结果,说明你的简单计数微服务已经成功部署在Docker上了。

    每次访问页面,计数器就会+1

    努力有用的话,还要天才做什么呢?
  • 相关阅读:
    [野外实验] 塞罕坝遥感实验(2020.7-8月)
    [学术论文] 一时兴趣的产出(新型TLS布站策略)被TGRS录用
    c++11 新特性实战 (一):多线程操作
    用 Docker Swarm 来部署 Nebula Graph 集群
    用图机器学习探索 A 股个股相关性变化
    图数据库对比:Neo4j vs Nebula Graph vs HugeGraph
    【程序人生】25岁,一位女程序员的幸运几年
    【开发总结】order by 为什么没有走索引?
    【故障总结】CPU飙升?我写的?
    mysql比现实时间少了八小时
  • 原文地址:https://www.cnblogs.com/crazy-xf/p/13431432.html
Copyright © 2011-2022 走看看