简介
本文用实战介绍Docker Compose部署SpringBoot项目。
本实例的最终文件如下:
源码及编译结果下载:
此内容 登录 后可见!
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-springboot logging: file: name: log/${spring.application.name}.log level: 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.0 ports: - 8080:8080 environment: - TZ=Asia/Shanghai
5.创建并启动容器
docker compose up -d
6.测试
启动后查看容器
docker ps
访问:ip:8080/doc.html
测试接口(可以看到:请求成功)
备注
也可以到docker内部去看看日志,会在/log下生成日志文件。
请先
!