Docker后端部署

1、构建Docker容器

首先编写 Dockerfile,将后端项目打包为 Docker 容器镜像。

Dockerfile 是一个文本配置文件,包含一系列指令,用干自动化构建 Docker 容器镜像。我们需要在 Dockerfile 中定义:

  1. 基础环境(比如预装 JDK 的 Linux 系统)
  2. 有哪些原始文件?(比如项目源代码)
  3. 如何构建项目?(比如 maven package命令打包)
  4. 如何启动项目?(比如 java -jar 命令).

2、两种编写方式

1、运行时打包。只把源代码复制到 Docker 工作空间中,在构造镜像时执行Maven打包。

java 复制代码
# 使用预装 Maven 和 JDK21 的镜像
FROM maven:3.9-amazoncorretto-21
WORKDIR /app

# 只复制必要的源代码和配置文件
COPY pom.xml .
COPY src ./src

# 使用 Maven 执行打包
RUN mvn clean package -DskipTests

# 暴露应用端口
EXPOSE 8123

# 使用生产环境配置启动应用
CMD ["java", "-jar", "/app/target/yuAn-ai-agent-0.0.1-SNAPSHOT.jar", "--spring.profiles.active=prod"]

简单来说,就是在构建 Docker 镜像的时候,动态地在容器内完成应用代码的编译打包操作。不是在本地先把 jar 包生成好再 copy 进去。而是 把代码 copy 到 Docker 镜像里,在构建镜像时去编译、打包。打包动作和镜像构建一步到位。

2、预打包

提前在自己的电脑上把 jar 包构建好,直接把得到的 target 目录下的 jar 包复制到 Docker 工作空间中,无需在构造镜像时打包。

java 复制代码
# 使用轻量级 JDK21 运行环境
FROM openjdk:21-slim

# 工作目录
WORKDIR /app

# 复制已经打包好的JAR文件(假设已放在当前目录)
COPY target/yu-ai-agent-0.0.1-SNAPSHOT.jar app.jar

# 暴露应用端口
EXPOSE 8123

# 使用生产环境配置启动应用
CMD ["java", "-jar", "app.jar", "--spring.profiles.active=prod"]

总结:

第一段:

源码 + Dockerfile ------> 构建镜像(包含打包过程) ------> 镜像(大)

第二段:

源码 ------> 本地打 jar ------> jar + Dockerfile ------> 构建镜像(不打包) ------> 镜像(小)

比较:

第一种方式的优点是更加自动化,不用每次部署项目都手动打jar 包,减少人工部署的成本和误差,但缺点是每次构建镜像时都要拉取 Maven 依赖,耗时更长。可以优先选择第一种方式,如果 Serverless 平台在构建镜像的过程中耗时过长、或者无法拉取依赖,那么再选择第二种方式。

相关推荐
LeenixP22 分钟前
RK3576-Debian12删除userdata分区
linux·运维·服务器·数据库·debian·开发板
qq_ceiling24 分钟前
H3C交换机配置M-LAG
运维·服务器·网络
warton8838 分钟前
ubuntu24 安装 proxsql 实现数据库代理
linux·运维·mysql·ubuntu
天意pt41 分钟前
Blog-SSR 系统操作手册(v1.0.0)
前端·vue.js·redis·mysql·docker·node.js·express
会跑的葫芦怪43 分钟前
cursor 打开wsl Ubuntu项目
linux·运维·ubuntu
沫离痕1 小时前
windows安装docker实例
windows·docker·容器
Full Stack Developme2 小时前
linux sudo su su - 三者区别
linux·运维·服务器
Byron Loong2 小时前
【系统】Linux内核和发行版的关系
linux·运维·服务器
weixin_399380692 小时前
OA 系统假死问题分析与优化
java·运维
济6172 小时前
linux(第十四期)--Uboot移植(2)-- 在U-Boot 中添加自己的开发板-- Ubuntu20.04
linux·运维·服务器