准备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

使用DockerCompose部署微服务项目(基于Springboot搭建一个简易计数器)的更多相关文章

  1. 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现

    庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介      在第七篇文章<庐山真面目之七微服务架构Consul ...

  2. Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

  3. linux系统部署微服务项目

    **:如果使用阿里云linux服务器 1.设置容器镜像服务 在阿里云平台搜索 "容器镜像服务" 选择"CentOS" 安装/升级Docker客户端 配置镜像加速 ...

  4. Docker部署微服务项目

    测试包准备工作 1.spring.io或者ide创建demo工程 spring官网 2.本地demo代码,打包成jar包 使用Dockerfile构建微服务镜像 3.将jar包上传到你的vps lin ...

  5. 使用docker-compose运行微服务项目#eureka+config+auth+gateway+module

    微服务架构中我们使用了必须的四个组件,eureka config gateway auth 其中config依赖eureka,auth依赖前两者,gateway又依赖auth 这样就确定了四个组件的启 ...

  6. docker-compose部署微服务

    1.安装docker-compose curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose ...

  7. Docker 搭建 ELK 读取微服务项目的日志文件

    思路: 在docker搭建elasticsearch与kibana来展示日志,在微服务部署的机子上部署logstash来收集日志传到elasticsearch中,通过kibana来展示,logstas ...

  8. SpringCloud(1)---基于RestTemplate微服务项目案例

    基于RestTemplate微服务项目 在写SpringCloud搭建微服务之前,我想先搭建一个不通过springcloud只通过SpringBoot和Mybatis进行模块之间额通讯.然后在此基础上 ...

  9. 十一、Docker搭建部署SpringCloud微服务项目Demo

    环境介绍 技术选型:SpringCloud&SpringCloud Alibaba&Docker 微服务模块划分: 员工模块:ems-employees 部门模块:ems-depart ...

  10. Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务

         前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for deskto ...

随机推荐

  1. 日志服务器 nagios log server

    官网 https://www.nagios.com/products/ 可官网下载手动安装也可命令安装 命令安装 cd /tmp wget https://assets.nagios.com/down ...

  2. py13函数迭代器与生成器

    """什么是迭代器 迭代:更新换代(重复)的过程,每次的迭代都必须基于上一次的结果 迭代器:迭代取值的工具 为什么要用 迭代器给你提供了一种不依赖于索引取值的方式 如何用 ...

  3. The Semantics of Constructors——2.4 成员初始化列表

    2.4 成员初始化列表(Member Initialization List) 当你写下一个constructor时,就有机会设定class members的初值.要不是经由member initia ...

  4. centos更改java的环境变量

    vi  /etc/profile 在最后添加这个信息,或修改这些信息 export JAVA_HOME=/usr/local/java/jdk1.8.0_251export CLASSPATH=.:$ ...

  5. KMS服务器 激活win 和 office

    环境:Debian 9.5 (Google Cloud) 切换到root用户:sudo su wget --no-check-certificate https://github.com/teddys ...

  6. 根据pid定时监控CPU使用率和内存使用率并输出到文件 (windows和linux跨平台可用)

    有时服务器运维中,某些程序员的应用发布后完全不管CPU和内存的使用率,只觉得代码能运行就行了,这样给我们运维人员经常造成困扰: 比如我在zabbix平台中就经常监测到凌晨1~3~5点时候突然CPU飙升 ...

  7. 三星电子的KNOX安全技术难以满足企业BYOD控管需求

    不可否认的是三星在智能手机领域里的辉煌战绩,三星最近推出了端到端的基于Android平台的解决方案KNOX,并且宣称可以提供从硬件到应用层的多重安全加固. KNOX是否能够延续其在企业领域里辉煌呢?相 ...

  8. 阿里云部署OSS对接TP项目

    1.配置文件写入参数 domain为阿里云oss存储实例要绑定的域名 2.获取accesskeyId和secret 注册用户 出现下图,选择"开始使用子用户Access Key" ...

  9. 三步建立自己域名的主页,Github Pages功能简明手册

    [task]把自己的页面上传到git上,用github pages功能托管网页. 准备工作: 1.自己的网页文件 2.有个自己的git账号 3.下载安装git.下载地址https://git-scm. ...

  10. 如何把高德地图搜索结果导出成excel里?

    前段时间,根据朋友的要求,开发了百度地图里的商家采集工具. 最近,又开发了腾讯地图里的商家采集工具. 来了兴致,干脆把高德地图的采集工具也一并搞定!:) 原理应该差不多,我就查阅了下高德地图的采集规则 ...