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

发布时间:2021-07-10 14:47:22 作者:chen
来源:亿速云 阅读:246
# 如何安装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. 扩展安全配置相关内容

推荐阅读:
  1. 使用Docker部署SpringBoot项目的实现方法
  2. Docker如何部署springboot项目

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

docker spring boot

上一篇:Python中怎么实现一个菲阿里四价策略

下一篇:C++如何实现遍历目录下文件

相关阅读

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

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