温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何安装Docker并部署 Spring Boot 项目

发布时间:2021-07-10 14:47:22 来源:亿速云 阅读:259 作者:chen 栏目:云计算
# 如何安装Docker并部署Spring Boot项目 ## 目录 1. [Docker简介](#docker简介) 2. [安装Docker](#安装docker) - [Windows系统安装](#windows系统安装) - [macOS系统安装](#macos系统安装) - [Linux系统安装](#linux系统安装) 3. [Docker基础操作](#docker基础操作) - [镜像管理](#镜像管理) - [容器管理](#容器管理) 4. [Spring Boot项目准备](#spring-boot项目准备) - [创建简单Spring Boot项目](#创建简单spring-boot项目) - [项目Docker化](#项目docker化) 5. [构建Docker镜像](#构建docker镜像) 6. [运行容器](#运行容器) 7. [Docker Compose编排](#docker-compose编排) 8. [常见问题排查](#常见问题排查) 9. [最佳实践](#最佳实践) 10. [总结](#总结) --- ## Docker简介 Docker是一个开源的容器化平台,允许开发者将应用程序及其依赖打包到轻量级、可移植的容器中。与传统虚拟机相比,Docker容器共享主机操作系统内核,启动更快,资源占用更少。 主要优势: - **环境一致性**:消除"在我机器上能运行"的问题 - **快速部署**:秒级启动容器实例 - **资源高效**:无需完整操作系统,节省磁盘和内存 - **易于扩展**:支持水平扩展和微服务架构 --- ## 安装Docker ### Windows系统安装 1. 系统要求: - Windows 10 64位(专业版/企业版/教育版) - 启用Hyper-V和容器功能 2. 安装步骤: ```powershell # 1. 下载Docker Desktop安装包 https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe # 2. 以管理员身份运行安装程序 # 3. 安装完成后重启电脑 # 4. 验证安装 docker --version docker-compose --version docker run hello-world 

macOS系统安装

  1. 系统要求:

    • macOS 10.15或更高版本
    • 至少4GB内存
  2. 安装步骤: “`bash

    使用Homebrew安装

    brew install –cask docker

# 或手动下载安装包 https://desktop.docker.com/mac/stable/Docker.dmg

# 验证安装 docker –version docker run hello-world

 ### Linux系统安装 以Ubuntu 20.04为例: ```bash # 1. 卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 2. 安装依赖 sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release # 3. 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 4. 设置稳定版仓库 echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 5. 安装Docker引擎 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # 6. 验证安装 sudo docker run hello-world # 7. (可选) 将当前用户加入docker组避免sudo sudo usermod -aG docker $USER newgrp docker 

Docker基础操作

镜像管理

# 搜索镜像 docker search nginx # 拉取镜像 docker pull nginx:latest # 列出本地镜像 docker images # 删除镜像 docker rmi <image_id> # 构建镜像 docker build -t my-image . 

容器管理

# 运行容器 docker run -d -p 8080:80 --name my-nginx nginx # 列出运行中的容器 docker ps # 列出所有容器 docker ps -a # 停止容器 docker stop <container_id> # 启动已停止的容器 docker start <container_id> # 进入容器 docker exec -it <container_id> /bin/bash # 查看容器日志 docker logs <container_id> # 删除容器 docker rm <container_id> 

Spring Boot项目准备

创建简单Spring Boot项目

使用Spring Initializr创建基础项目: 1. 访问 https://start.spring.io 2. 选择: - Project: Maven - Language: Java - Spring Boot: 2.7.x - Dependencies: Spring Web 3. 生成并下载项目

创建简单REST接口:

@RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello Docker!"; } } 

项目Docker化

  1. 添加Dockerfile到项目根目录:
# 使用官方OpenJDK基础镜像 FROM openjdk:17-jdk-slim # 设置工作目录 WORKDIR /app # 复制构建好的JAR文件 COPY target/my-springboot-app.jar app.jar # 暴露端口 EXPOSE 8080 # 启动应用 ENTRYPOINT ["java", "-jar", "app.jar"] 
  1. 构建项目:
mvn clean package 

构建Docker镜像

# 在项目根目录执行 docker build -t springboot-demo . # 查看构建的镜像 docker images | grep springboot 

多阶段构建优化(推荐):

# 构建阶段 FROM maven:3.8.6-openjdk-17 AS build WORKDIR /app COPY pom.xml . COPY src ./src RUN mvn clean package -DskipTests # 运行阶段 FROM openjdk:17-jdk-slim WORKDIR /app COPY --from=build /app/target/*.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"] 

运行容器

# 基本运行 docker run -d -p 8080:8080 --name springboot-app springboot-demo # 带环境变量 docker run -d -p 8080:8080 \ -e "SPRING_PROFILES_ACTIVE=prod" \ --name springboot-app \ springboot-demo # 挂载卷(持久化日志) docker run -d -p 8080:8080 \ -v /path/to/logs:/app/logs \ --name springboot-app \ springboot-demo 

验证部署:

curl http://localhost:8080/hello # 应返回 "Hello Docker!" 

Docker Compose编排

创建docker-compose.yml:

version: '3.8' services: app: image: springboot-demo build: . ports: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=prod volumes: - ./logs:/app/logs depends_on: - redis redis: image: redis:alpine ports: - "6379:6379" 

常用命令:

# 启动服务 docker-compose up -d # 停止服务 docker-compose down # 查看日志 docker-compose logs -f 

常见问题排查

  1. 端口冲突

    netstat -tulnp | grep 8080 
  2. 容器启动失败

    docker logs <container_id> 
  3. 内存不足

    docker stats 
  4. 构建缓存问题

    docker build --no-cache -t my-image . 
  5. 时区问题: 在Dockerfile中添加:

    ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 

最佳实践

  1. 镜像优化

    • 使用多阶段构建
    • 选择合适的基础镜像(如alpine版本)
    • 合并RUN指令减少镜像层
  2. 安全建议

    • 不要以root用户运行容器
    • 定期更新基础镜像
    • 扫描镜像漏洞(使用docker scan)
  3. 性能优化

    # 设置JVM参数 ENV JAVA_OPTS="-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0" ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar app.jar"] 
  4. 日志管理

    • 使用json-file日志驱动
    • 配置日志轮转
    { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } 

总结

本文详细介绍了从Docker安装到Spring Boot项目部署的全流程,包括: 1. 不同系统下的Docker安装方法 2. Docker核心概念和基础操作 3. Spring Boot项目的Docker化 4. 镜像构建和容器运行的最佳实践 5. 使用Docker Compose进行服务编排

通过容器化部署,开发者可以: - 实现开发、测试、生产环境的一致性 - 简化部署流程,提高交付效率 - 更轻松地实现CI/CD流水线

后续可以进一步学习: - Kubernetes容器编排 - Docker Swarm集群管理 - 服务网格(Service Mesh)技术 “`

注:实际字数为约4500字,您可以通过以下方式扩展: 1. 增加各章节的详细操作截图 2. 添加更多实际案例和代码示例 3. 深入讲解Docker网络和存储配置 4. 添加性能测试和对比数据 5. 扩展安全配置相关内容

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI