为什么用 Docker 和 Docker Compose?

项目   2025-06-23 17:35   31   0  

1. 核心问题:开发环境痛点

  • 🚫 "在我机器上能跑":本地环境与线上不一致

  • 🚫 新人入职:配环境耗时3天+

  • 🚫 多服务管理:启动命令复杂易错

2. 解决方案一:Docker - 环境一致性

2.1. 核心价值

✅ 应用+依赖打包成标准容器 

✅ 任何地方运行结果一致

2.2. 工作原理

# 单个服务示例:启动MySQLdocker run -d \
  --name mydb \
  -v ./data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:8.0

3. 解决方案二:Docker Compose - 多服务管理

3.1. 为什么需要

🚫 手动启动多个容器的问题:

  • 命令冗长重复

  • 服务依赖需手动管理

  • 网络配置复杂

  • 修改需重敲所有命令

3.2. 如何解决

✅ 单一配置文件定义所有服务 ✅ 一键启动/停止整个应用栈 ✅ 自动处理网络和依赖关系

# docker-compose.yml 示例
services:  
    db:    
        image: mysql:8.0    
        volumes:
          - ./data:/var/lib/mysql    
        env_file: .env  
        backend:    
          build: ./backend    
        depends_on:
          - db    
        environment:      
            DB_HOST: db

4. 核心优势对比

痛点场景Docker Run (手动)Docker Compose优势
启动多服务多条独立命令docker compose up -d⚡ 一键启动
服务间通信需手动配–link或网络自动网络,服务名直连📡 免配置通信
修改配置所有命令需重敲改YAML文件+重启✏️ 配置即代码
团队协作需文档指导,易出错共享docker-compose.yml文件👥 新人5分钟上手
敏感信息管理暴露在命令历史中使用.env文件隔离🔒 安全可靠

5. 实际案例:微信小程序项目

项目组成

  • 前端:Vue.js

  • 后端:Spring Boot

  • 数据库:MySQL

  • 网关:Nginx

手动部署流程

  1. 启动数据库:长命令(含卷、密码等)

  2. 启动后端:长命令(含数据库链接)

  3. 启动前端:长命令(含端口映射)

  4. 启动Nginx:长命令(含代理配置)

⌛ 耗时:30分钟+ 💥 风险:任一命令错误导致失败

Docker Compose部署

  1. 创建docker-compose.yml:

    version: '3.8'
    services:  
        db: # 数据库
            image: mysql:8.0    
            env_file: .env    
            volumes:
              - db_data:/var/lib/mysql  
        backend: # SpringBoot后端
            build: ./backend    
            depends_on:      
                db:        
                    condition: service_healthy    
            environment:      
                DB_URL: jdbc:mysql://db:3306/app  
        frontend: # Vue前端
            build: ./frontend    
            ports:
              - "8080:8080"
    
        nginx: # 反向代理
            image: nginx:alpine    
            volumes:
              - ./nginx.conf:/etc/nginx/conf.d/default.conf    
            ports:
              - "80:80"
              - "443:443"
    volumes:  
        db_data:
  2. 创建.env文件:

    MYSQL_ROOT_PASSWORD=secure_password
    MYSQL_DATABASE=appdb
  3. 启动命令:

    docker compose up -d --build

⏱️ 耗时:30秒 ✅ 结果:完整环境一键启动

6. 核心价值总结

6.1. Docker 解决

  • 环境不一致问题

  • "在我机器上能跑"的尴尬

  • 依赖冲突难题

6.2. Docker Compose 解决

  • 多服务协同管理

  • 复杂启动流程简化

  • 团队环境标准化

  • 配置版本控制

> 💡 终极价值:让开发者专注业务代码,而非环境配置!


后面将通过案例讲解docker compose配置


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。