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

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

简介

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


分享Java真实高频面试题,吊打面试官: Java后端真实面试题大全 - 自学精灵

分享靠谱的Java高级实战,包含:高并发、架构、全局处理等:JavaWeb高级实战 - 自学精灵


1.创建SpringBoot项目

Controller

java 复制代码
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-springboot

logging:
  file:
    name: log/${spring.application.name}.log
  level:
    root: info

pom.xml

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文件,内容如下:

bash 复制代码
# 基础镜像使用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.0
    ports:
      - 8080:8080
    environment:
      - TZ=Asia/Shanghai

5.创建并启动容器

bash 复制代码
docker compose up -d

6.测试

启动后查看容器

复制代码
docker ps

访问:ip:8080/doc.html

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

备注

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

相关推荐
虎头金猫19 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS20 小时前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
AI职业加油站21 小时前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏1 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
玉&心1 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing1 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
-梅1 天前
linux(8) 软硬链接
linux·运维·服务器
赵文宇(温玉)1 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang1 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren1 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github