当前位置: 首页 > news >正文

Docker Compose--部署SpringBoot项目--实战

原文网址:Docker Compose--部署SpringBoot项目--实战-CSDN博客

简介

本文用实战介绍Docker Compose部署SpringBoot项目。

-----------------------------------------------------------------------------------------------
分享Java真实高频面试题,吊打面试官: Java后端真实面试题大全 - 自学精灵
分享靠谱的Java高级实战,包含:高并发、架构、全局处理等:JavaWeb高级实战 - 自学精灵
-----------------------------------------------------------------------------------------------

1.创建SpringBoot项目

Controller

package com.knife.example.controller;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;@Slf4j
@Api(tags = "测试")
@RequestMapping("test")
@RestController
public class HelloController {@ApiOperation("测试1")@PostMapping("test1")public String test() {return "success";}
}

application.yml

spring:application:name: docker-springbootlogging:file:name: log/${spring.application.name}.loglevel:root: info

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 https://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.4.13</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.knife</groupId><artifactId>docker-springboot</artifactId><version>0.0.1-SNAPSHOT</version><name>docker-springboot</name><description>Demo project for Docker Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2.创建Dockerfile

创建Dockerfile文件,内容如下:

# 基础镜像使用java
# 也可以用:FROM openjdk:8
FROM java:8# 作者
MAINTAINER knife <xxx@xx.com># 不是真正的发布端口,只是容器部署人员与建立image的人员之间的交流。
# 即:建立image的人员告诉容器布署人员容器应该映射哪个端口给外界
EXPOSE 8080# 指定临时文件目录,此步骤非必须。如果Java里要操作文件,就要添加这个配置
# 会在主机 /var/lib/docker 创建文件,连接到容器的/tmp。SpringBoot的内嵌Tomcat默认使用/tmp作为工作目录
VOLUME /tmp# 将jar包添加到容器中并更名为app.jar
ADD *.jar app.jar# ENTRYPOINT:docker启动时,运行的命令。这里直接运行jar服务。
ENTRYPOINT ["java","-jar","/app.jar"]

3.生成镜像

1.将SpringBoot项目打包,生成.jar文件

本处生成的是:docker-springboot-0.0.1-SNAPSHOT.jar。

打包方法:在Idea里双击绿色剪头所指的位置

2.将jar包和Dockerfile上传到服务器

注意:这两个放到同一路径之下。

3.生成镜像

在这两个文件所在的路径中执行命令:

docker build -t custom_docker-springboot:1.0 .

4.查看镜像

docker images

4.创建compose文件

docker-compose.yml

version: '3'
services:custom_docker-springboot:# 启动方式#restart: unless-stopped# 镜像image: custom_docker-springboot:1.0# 容器名字container_name: custom_docker-springboot1.0ports:- 8080:8080environment:- TZ=Asia/Shanghai

5.创建并启动容器

docker compose up -d

6.测试

启动后查看容器

docker ps

访问:ip:8080/doc.html

测试接口(可以看到:请求成功)

备注

也可以到docker内部去看看日志,会在/log下生成日志文件。 

http://www.lryc.cn/news/276564.html

相关文章:

  • 单电阻FOC算法实现永磁同步电机的调整步骤和设置
  • 化学DS-1040 Tosylate 抑制剂 1335138-89-0科研用途
  • PaddlePaddle初使用
  • 【FPGA】分享一些FPGA数字信号处理相关的书籍
  • 深度解析JavaScript面试热点:事件循环、上下文、箭头函数、变量作用域与ES6模块
  • Javaweb之Mybatis的动态SQL的详细解析
  • 物联网与智能家居:跨境电商与未来生活的融合
  • Java内存模型(JMM)是基于多线程的吗
  • Linux离线安装MySQL(rpm)
  • 用 Socket.D 替代原生 WebSocket 做前端开发
  • Transformer架构和对照代码详解
  • 大数的乘法
  • 年度征文 | 机器学习之心的2023
  • 13.Kubernetes应用部署完整流程:从Dockerfile到Ingress发布完整流程
  • 多年后再用TB,谈项目管理工具
  • Spark MLlib ----- ALS算法
  • ubuntu桥接方式上网
  • 收到的字符串写入xml并且将这个xml写入.zip文件中
  • 【读书笔记】《白帽子讲web安全》跨站脚本攻击
  • 第九节 初始化项目
  • 【论文阅读】深度学习中的后门攻击综述
  • Spring Boot中加@Async和不加@Async有什么区别?设置核心线程数、设置最大线程数、设置队列容量是什么意思?
  • Vue_00001_CLI
  • kubernetes ResourceQuotas Limits(资源配额)
  • 【ARMv8架构系统安装PySide2】
  • ECMAScript6详解
  • [C#]使用PaddleInference图片旋转四种角度检测
  • stable diffusion 基础教程-提示词之光的用法
  • 第9课 回声抑制(AEC+AGC+ANS)的实现
  • 软件测试|Python中的变量与关键字详解