docker compose部署微服务

lxf2023-04-12 22:20:02
摘要

这篇文章主要介绍了DockerCompose部署微服务项目上线,需求是这样的编写一个SpringBoot+Redis的微服务项目,并提供hello接口,每访问一次接口,计数器+1,本文给大家分享实现思路,需要的朋友可以参考下

目录
  • 一、需求说明
  • 二、效果图
  • 三、项目结构
  • 四、核心源码
    • ♻️Java依赖与接口
    • ♨️Docker相关源码
  • 五、部署项目
    • ⛵小结

      一、需求说明

      编写一个SpringBoot + Redis微服务项目,并提供 hello接口,每访问一次接口,计数器+1

      二、效果图

      docker compose部署微服务

      三、项目结构

      docker compose部署微服务

      目录说明

      docker-compose.yml :项目的启动文件,配置编排等

      Dockerfile:项目上线所需要的依赖,以及启动方式

      四、核心源码

      ♻️Java依赖与接口

      依赖文件

      pom.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="Http://Maven.apache.org/POM/4.0.0"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>2.5.5</version>
              <relativePath/> <!-- lookup parent from repository -->
          </parent>
          <groupId>org.example</groupId>
          <artifactId>demo</artifactId>
          <version>1.0-SNAPSHOT</version>
      
          <dependencies>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-WEB</artifactId>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-data-redis</artifactId>
                  <exclusions>
                      <exclusion>
                          <groupId>io.lettuce</groupId>
                          <artifactId>lettuce-core</artifactId>
                      </exclusion>
                  </exclusions>
              </dependency>
              <dependency>
                  <groupId>redis.clients</groupId>
                  <artifactId>jedis</artifactId>
              </dependency>
      
          </dependencies>
      
          <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                  </plugin>
              </plugins>
      
              <resources>
                  <resource>
                      <directory>src/main/java</directory>
                      <includes>
                          <include>***.jar</include>
                      </includes>
                  </resource>
              </resources>
          </build>
      
      </project>
      

      接口

      HelloController

      package com.wanshi.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;
      
      @RestController
      public class HelloController {
          @Autowired
          private StringRedisTemplate redisTemplate;
          @GetMapping("/hello")
          public String hello() {
              Long views = redisTemplate.opsForValue().increment("views");
              return "hello, xiaowang, views:" + views;
          }
      }

      配置文件

      application.yml

      server:
        port: 8080
      spring:
        redis:
          host: redis
      

      ♨️Docker相关源码

      Dockerfile

      FROM java:8
      COPY *.jar /app.jar
      CMD ["--server.port=8080"]
      EXPOSE 8080
      ENTRYPOINT ["java", "-jar", "/app.jar"]

      docker-compose.yml

      version: '3.8'
      services:
        xiwoangapp:
          build: .
          image: xiaowangapp
          depends_on:
            - redis
          ports:
            - "8080:8080"
        redis:
          image: "redis:3.0.7"

      五、部署项目

      打包后端项目通过命令

      mvn clean package 
      

      jar包与配置文件上传linux服务器,新建指定文件夹(通过Filezilla上传文件)

      docker compose部署微服务

      执行命令启动

      docker-compose up
      

      docker compose部署微服务

      部署成功后我们查看服务是否启动

      docker ps
      

      docker compose部署微服务

      本机进行访问

      curl localhost:8080/hello
      

      docker compose部署微服务

      ⛵小结

      以上就是【Bug 终结者】对 【云原生】Docker Compose 进阶 – 部署微服务项目上线 的简单介绍 ,Compose 部署项目,实战练习,进阶!