news 2026/6/29 21:18:27

Docker容器化部署实战:从零构建Spring Boot微服务镜像

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker容器化部署实战:从零构建Spring Boot微服务镜像

为什么需要 Docker

  • 环境一致性:开发、测试、生产环境完全一致
  • 快速部署:秒级启动,秒级扩容
  • 资源隔离:每个容器独立运行,互不影响
  • CI/CD 友好:与 Jenkins/GitHub Actions 无缝集成

回到顶部

二、Spring Boot 项目准备

<!-- pom.xml --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> mvn clean package -DskipTests // target/myapp-1.0.0.jar

回到顶部

三、编写 Dockerfile

# 基础版 FROM openjdk:21-jdk-slim WORKDIR /app COPY target/myapp-1.0.0.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"] # 多阶段构建(推荐) FROM maven:3.9-eclipse-temurin-21 AS builder WORKDIR /build COPY pom.xml . RUN mvn dependency:go-offline COPY src ./src RUN mvn package -DskipTests FROM eclipse-temurin:21-jre-alpine WORKDIR /app COPY --from=builder /build/target/myapp-1.0.0.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"]

回到顶部

四、构建和运行

# 构建镜像 docker build -t myapp:1.0.0 . # 运行容器 docker run -d --name myapp -p 8080:8080 \ -e SPRING_PROFILES_ACTIVE=prod \ -e JAVA_OPTS="-Xms256m -Xmx512m" \ myapp:1.0.0 # 查看日志 docker logs -f myapp # 进入容器调试 docker exec -it myapp sh

回到顶部

五、Docker Compose 编排

# docker-compose.yml version: "3.8" services: app: build: . ports: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=prod - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/mydb depends_on: db: condition: service_healthy restart: always db: image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORD=123456 - MYSQL_DATABASE=mydb volumes: - mysql_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping"] interval: 10s retries: 5 redis: image: redis:7-alpine ports: - "6379:6379" volumes: mysql_data: # 一键启动 docker compose up -d

回到顶部

六、镜像优化技巧

# 1. 使用 .dockerignore # .dockerignore .git .mvn target/classes test # 2. 非root用户运行 RUN addgroup -S appgroup && adduser -S appuser -G appgroup USER appuser # 3. 镜像大小对比 # openjdk:21-jdk = 470MB # eclipse-temurin:21-jre-alpine = 90MB # 节省 80%

回到顶部

七、常用命令速查

docker images docker ps -a docker logs -f myapp docker stats
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/29 21:18:21

示波器的正确使用

示波器使用与排查笔记版一、示波器基本认识示波器用来看电压随时间的变化&#xff0c;不是单纯测一个电压值。它主要看&#xff1a;波形形状峰峰值 Vpp周期 T频率 f占空比 Duty毛刺/噪声上升沿/下降沿测量时一定要记住&#xff1a;示波器测的是&#xff1a;探头尖端相对于地夹的…

作者头像 李华
网站建设 2026/6/29 21:11:57

2026深度实测|Trae与Cursor怎么选?真实Vibe Coding迭代对比指南

我的工作流是 AI 辅助 人工审核&#xff0c;所以 AI 编程工具的代码质量直接决定我的审核成本。我长期实测5款主流AI编程工具后&#xff0c;重点对比Work 模式&#xff08;原 SOLO 模式&#xff09;与 Cursor Composer 的真实编码表现&#xff0c;帮大家精准适配开发场景。作为…

作者头像 李华
网站建设 2026/6/29 21:11:30

短短三天,英伟达和微软同时宣告:真正的AI电脑来了!

2026年6月1号&#xff0c;英伟达GTC大会&#xff0c;英伟达首款RTX Spark「超级芯片」亮相。它意味着全球首款专为Agent打造的Windows PC诞生了&#xff01;它的诞生&#xff0c;可以用史无前例来形容&#xff0c;6144个GPU核心、128GB统一内存&#xff0c;把过去只有数据中心才…

作者头像 李华
网站建设 2026/6/29 21:01:43

MetaSKILLs 系统深度解析:AI Agent 正在学会「自己给自己写技能」

一个让工程师崩溃的早晨想象一下这个场景&#xff1a;周一早上 9 点&#xff0c;你打开公司内部的 AI Agent 后台&#xff0c;输入一段需求&#xff1a;"帮我调研一下过去三个月社区里关于 RAG 技术的热门讨论&#xff0c;整理一份带数据图表的报告&#xff0c;顺便分析一…

作者头像 李华
网站建设 2026/6/29 20:56:29

洛谷 P1854 花店橱窗布置:从 OJ 题解到动态规划实战心法

1. 从花店橱窗到动态规划&#xff1a;一道题的思维蜕变 第一次看到洛谷P1854这道题时&#xff0c;我盯着"花店橱窗布置"这个标题愣了半天。这不就是个摆花的题目吗&#xff1f;但当我真正开始解题时&#xff0c;才发现这道题简直是动态规划教学的绝佳案例。就像搭积木…

作者头像 李华