SpringBoot 项目打成 jar包,打包命令:
mvn clean package -Dmaven.test.skip=true
打包后在 target/ 目录获取 jar包,复制到部署目录
使用 docker 创建一个可以运行 jar 包的镜像文件

创建 Dockerfile 文件,根据你项目的jdk版本自行选择jdk
FROM amazoncorretto:21
ADD ./*.jar /app.jar
EXPOSE 80
ENTRYPOINT ["java", "-jar","-Dserver.port=80" , "/app.jar"]
打开cmd控制台,来到你存放Dockerfile目录下执行:
docker build -t ims:1.0.0 .
-t 是一个参数选项,全称是 --tag,用于给构建的镜像指定一个名称和可选的标签。
-t 的格式:
-t <镜像名>:<标签>
如果只提供 <镜像名> 而不指定 <标签>,Docker 会默认使用 latest 作为标签。

可以看到image构建成功

使用docker compose文件方式启动
新建ims.yaml文件:
version: '3.7'
services:
ims:
image: ims:1.0.0
volumes:
- D:/docker/test/logs:/logs
- D:/docker/test/config:/config
ports:
- 8401:80
environment:
- TZ=Asia/Shanghai
deploy:
replicas: 1
restart_policy:
condition: on-failure
resources:
limits:
cpus: '4'
memory: 8G
entrypoint: ["java", "-XX:+UseContainerSupport","-XX:InitialRAMPercentage=70.0", "-XX:MaxRAMPercentage=70.0", "-jar", "-Dserver.port=80", "/app.jar","--spring.profiles.active=prod"]
networks:
- _network
networks:
_network:
external: true
driver: overlay
name: lk

执行
docker-compose -f ims.yaml up -d

然后可以访问项目了,我访问的是knife的接口地址
http://localhost:8401/doc.html
当然也可以直接用命令run起来,windows系统的cmd执行不可换行:
docker run -d --name ims -v D:/docker/test/logs:/logs -v D:/docker/test/config:/config -p 8401:80 -e TZ=Asia/Shanghai --cpus="4" --memory="8g" --network lk --restart=on-failure ims:1.0.0 java -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -jar -Dserver.port=8401 /app.jar --spring.profiles.active=prod
PowerShell 支持换行
docker run -d `
--name ims `
-v D:/docker/test/logs:/logs `
-v D:/docker/test/config:/config `
-p 8401:80 `
-e TZ=Asia/Shanghai `
--cpus="4" `
--memory="8g" `
--network lk `
--restart=on-failure `
ims:1.0.0 `
java -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -jar -Dserver.port=8401 /app.jar --spring.profiles.active=prod
注意,我现在网络已经创建好了,如果需要创建网络:
REM 1. 创建网络(如果需要)
docker network create --driver overlay lk