-Docker发布微服务

简介: 本教程介绍如何将SpringBoot微服务打包并发布到Docker容器。首先创建Maven项目,编写Controller接口与配置文件,通过Maven打包成jar;再将jar上传服务器,编写Dockerfile构建镜像,最终运行容器并映射端口6001,实现微服务的Docker化部署。

12-Docker发布微服务
搭建SpringBoot项目
搭建一个简单的SpringBoot项目:
创建maven工程,pom为:

新建Module,pom为:

编写一个配置文件

编写主启动类

编写一个Controller
Java
运行代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.study.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.UUID;

/**

  • @author tengyer 2022/05/06 16:35
    */
    @RestController
    public class OrderController {
    @Value("${server.port}")
    private String port;

    @RequestMapping("/order/docker")
    public String helloDocker() {

     return "hello world \t" + port + "\t" + UUID.randomUUID().toString();
    

    }

    @RequestMapping(value = "/order/index", method = RequestMethod.GET)
    public String index() {

     return "服务端口号:" + "\t" + port + "\t" + UUID.randomUUID().toString();
    

    }
    }

在Idea中运行没有问题时,将其使用maven的package打成jar包。
发布微服务项目到Docker容器
将项目jar包上传到服务器
编写Dockerfile
Dockerfile
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FROM openjdk:8-oracle
MAINTAINER lee

在主机 /var/lib/docker目录下创建一个临时文件,并链接到容器的 /tmp

VOLUME /tmp

将jar包添加到容器中,并命名为 springboot_docker.jar

ADD docker_boot-1.0-SNAPSHOT.jar /springboot_docker.jar

运行jar包

RUN bash -c 'touch /springboot_docker.jar'
ENTRYPOINT ["java", "-jar", "/springboot_docker.jar"]

SpringBoot项目配置的端口号为6001,需要将6001暴露出去

EXPOSE 6001

构建镜像
Shell
运行代码
复制代码
1
docker build -t springboot_docker:1.0 .

启动容器:
Shell
运行代码
复制代码
1
docker run -d -p 6001:6001 --name springboot springboot_docker:1.0

相关文章
|
1天前
|
NoSQL 关系型数据库 MySQL
Docker-compose容器编排
Docker-Compose是Docker官方开源工具,通过docker-compose.yml文件定义多容器应用,实现一键编排、启动、停止。支持服务间依赖配置,简化微服务部署流程,提升开发运维效率。
|
1天前
|
缓存 负载均衡 Java
优雅启动:如何避免流量打到没有启动完成的节点?
本文介绍RPC服务优雅启动的两大核心机制:**启动预热**与**延迟暴露**。通过启动预热,调用方按时间动态提升新节点权重,避免刚启动的“冷”服务因高负载导致请求超时;结合延迟暴露,在应用完全启动并完成资源预加载后才注册到注册中心,确保服务上线即稳定。二者协同实现流量平滑接入,保障系统可靠性。
|
数据可视化 Java Nacos
OpenFeign + Sentinel 实现微服务熔断限流实战
本文介绍如何在Spring Cloud微服务架构中,结合OpenFeign与阿里巴巴开源组件Sentinel,实现服务调用的熔断、降级与限流。通过实战步骤搭建user-service与order-service,集成Nacos注册中心与Sentinel Dashboard,演示服务异常熔断、QPS限流控制,并支持自定义限流响应。借助Fallback降级机制与可视化规则配置,提升系统稳定性与高可用性,助力构建健壮的分布式应用。
445 155
|
9天前
|
Java Nacos Sentinel
SpringCloud 微服务解决方案:企业级架构实战
全面介绍 SpringCloud 微服务解决方案,涵盖服务注册发现、网关路由、熔断限流、分布式事务等企业级实践
|
消息中间件 存储 缓存
Kafka 架构和原理机制 (图文全面详解)
一文了解掌握 Kafka 的基本架构、原理、特性、应用场景,以及Zookeeper 在 kafka 的作用。
Kafka 架构和原理机制 (图文全面详解)
|
24天前
|
架构师 微服务
【架构师】微服务的拆分有哪些原则?
微服务拆分需遵循七大原则:职责单一、围绕业务、中台化公共模块、按系统保障级别分离、技术栈解耦、避免循环依赖,并遵循康威定律使架构与组织匹配,提升可维护性与协作效率。
120 4
|
29天前
|
缓存 监控 Java
用 Spring Boot 3 构建高性能 RESTful API 的 10 个关键技巧
本文介绍使用 Spring Boot 3 构建高性能 RESTful API 的 10 大关键技巧,涵盖启动优化、数据库连接池、缓存策略、异步处理、分页查询、限流熔断、日志监控等方面。通过合理配置与代码优化,显著提升响应速度、并发能力与系统稳定性,助力打造高效云原生应用。
383 3
|
2月前
|
消息中间件 运维 监控
《聊聊分布式》分布式最终一致性方案:从理论到实践的完整指南
最终一致性是分布式系统中平衡性能、可用性与一致性的关键策略,通过异步处理与容错设计,在保证数据最终一致的前提下提升系统扩展性与可靠性。
|
26天前
|
消息中间件 安全 Java
java消费消息且保证消息不丢失
本文介绍Java中如何安全消费消息并防止消息丢失或篡改,涵盖Kafka与RabbitMQ的消息持久化、手动确认机制及偏移量控制,强调事务处理与元数据保留,确保消息完整性与可靠性。
92 0
|
1月前
|
消息中间件 缓存 NoSQL
Redis + Java 架构实战:从锁机制到消息队列的整合
本文深入解析Redis与Java的整合实践,涵盖分布式锁、消息队列、缓存策略、高性能数据结构及容错机制。结合电商场景,助力构建高并发、高可用的分布式系统。
109 8