使用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

使用DockerCompose部署微服务项目(基于Springboot搭建一个简易计数器)的更多相关文章
- 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现
庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介 在第七篇文章<庐山真面目之七微服务架构Consul ...
- Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试
一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...
- linux系统部署微服务项目
**:如果使用阿里云linux服务器 1.设置容器镜像服务 在阿里云平台搜索 "容器镜像服务" 选择"CentOS" 安装/升级Docker客户端 配置镜像加速 ...
- Docker部署微服务项目
测试包准备工作 1.spring.io或者ide创建demo工程 spring官网 2.本地demo代码,打包成jar包 使用Dockerfile构建微服务镜像 3.将jar包上传到你的vps lin ...
- 使用docker-compose运行微服务项目#eureka+config+auth+gateway+module
微服务架构中我们使用了必须的四个组件,eureka config gateway auth 其中config依赖eureka,auth依赖前两者,gateway又依赖auth 这样就确定了四个组件的启 ...
- docker-compose部署微服务
1.安装docker-compose curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose ...
- Docker 搭建 ELK 读取微服务项目的日志文件
思路: 在docker搭建elasticsearch与kibana来展示日志,在微服务部署的机子上部署logstash来收集日志传到elasticsearch中,通过kibana来展示,logstas ...
- SpringCloud(1)---基于RestTemplate微服务项目案例
基于RestTemplate微服务项目 在写SpringCloud搭建微服务之前,我想先搭建一个不通过springcloud只通过SpringBoot和Mybatis进行模块之间额通讯.然后在此基础上 ...
- 十一、Docker搭建部署SpringCloud微服务项目Demo
环境介绍 技术选型:SpringCloud&SpringCloud Alibaba&Docker 微服务模块划分: 员工模块:ems-employees 部门模块:ems-depart ...
- Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务
前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for deskto ...
随机推荐
- android修改frameework与service,vendor分区需要替换的文件
1. 修改framework代码 需要将framework.jar包提供给android studio使用,并替换车机内文件(两种framework.jar不是同一文件,一个是生成文件一个是安卓目录文 ...
- SourceInsight4.0修改字体大小
SourceInsight4.0修改字体大小 1.右键Options->Preferences.如图所示,然后找到Syntax Decorations选项,点击File Types 2.点击Fi ...
- 前端面试-经典的Vue面试题
面试总结三大模块:Vue双向绑定及原理.生命周期.组件通信.Vue官方API 目录:1.Vue双向绑定及原理 1.1你对MVVM是怎么理解的? 1.2你对Vue响应式原理是怎么理解的?是否可以实现一个 ...
- ncnn 加载 bin文件时,出错 报异常 0xC0000094:Integer division by zero。
这次转yolov8.pt 到 onnx 到 ncnn,调用ncnn,加载bin文件时出错报异常 0xC0000094:Integer division by zero. 解决方式: 导出onnx时,加 ...
- tensorflow-gpu安装遇到的坑
tensorflow-gpu安装好导入,一直出现以下错误 折腾了好久. 错误之前也按照中国官网安装及配置各环境变量:https://tensorflow.google.cn/install/gpu 其 ...
- zuoye(借鉴)
- DataTable中排序的开启与禁用
1. 2. orderable设置成true会打开排序功能,设置为false会禁用排序功能.
- 回溯-1-N皇后(Backtracking-1-N Queens)
#include <stdio.h> #define N 4 enum bool {TRUE, FALSE}; void print_Q(int *Q) { int i; for (i = ...
- 【OBS Studio】使用 VLC 视频源播放视频报错:Unhandled exception: c0000005
使用 OBS Studio 和 VLC media player 可以实现视频播放列表的推流,参考『OBS如何添加播放列表?』. 但是使用过程中发现使用 VLC 视频源播放视频时,一个视频播放完切换下 ...
- Markdown中如何让# * >等符号原样显示,不转义解析成对应Markdown语法
加\转义: * markdown 中如果遇到有字符与原有语法冲突, 可以使用反引号"`"包裹需要转移的内容. * 反引号位于键盘左上角Esc下面的位置 示例: # * > 原 ...