• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Docker Compose 使用实例详解

    发布者: 浪子 | 发布时间: 2025-6-14 13:29| 查看数: 43| 评论数: 0|帖子模式

    一、Docker Compose 简介

    Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具,通过 YAML 文件配置应用程序服务,一键启动所有关联容器。

    二、安装 Docker Compose

    Linux
    1. sudo curl -L "https://mirrors.tuna.tsinghua.edu.cn/docker/compose/releases/download/v2.32.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    2. sudo chmod +x /usr/local/bin/docker-compose
    复制代码
    Windows/macOS
    通过 Docker Desktop 安装(已内置 Compose)
    验证安装:
    1. docker-compose --version
    复制代码
    三、基础配置文件示例(docker-compose.yml)
    1. version: '3.8'  # Compose文件格式版本
    2. services:
    3.   web:
    4.     build: .  # 使用当前目录的Dockerfile构建
    5.     ports:
    6.       - "8000:80"  # 主机端口:容器端口
    7.     depends_on:
    8.       - db
    9.     environment:
    10.       - DB_HOST=db
    11.     networks:
    12.       - mynetwork
    13.   db:
    14.     image: mysql:8.0
    15.     volumes:
    16.       - db_data:/var/lib/mysql
    17.     environment:
    18.       MYSQL_ROOT_PASSWORD: example
    19.       MYSQL_DATABASE: myapp
    20.     networks:
    21.       - mynetwork
    22.     healthcheck:
    23.       test: ["CMD-SHELL", "mysqladmin ping -h localhost"]
    24.       interval: 30s
    25.       timeout: 10s
    26.       retries: 3
    27. volumes:
    28.   db_data:
    29. networks:
    30.   mynetwork:
    31.     driver: bridge
    复制代码
    四、关键配置解析


    • version:指定Compose文件格式版本(常用3.x)
    • services:定义服务(容器)

        1. build
        复制代码
        :指定构建上下文路径(含Dockerfile)
        1. image
        复制代码
        :直接使用官方镜像
        1. ports
        复制代码
        :端口映射
        1. depends_on
        复制代码
        :服务依赖关系
        1. environment
        复制代码
        :环境变量设置

    • volumes:数据卷定义(持久化存储)
    • networks:自定义网络配置
    • healthcheck:容器健康检查

    五、常用命令

    启动服务
    1. docker-compose up -d  # 后台启动
    2. docker-compose up --build  # 重新构建后启动
    复制代码
    停止服务
    1. docker-compose down  # 停止并删除容器、网络等
    2. docker-compose stop  # 仅停止容器
    复制代码
    查看日志
    1. docker-compose logs -f  # 实时查看日志
    2. docker-compose logs web  # 查看指定服务日志
    复制代码
    进入容器
    1. docker-compose exec web bash  # 进入web容器
    复制代码
    构建镜像
    1. docker-compose build  # 构建所有服务镜像
    2. docker-compose build web  # 仅构建web服务镜像
    复制代码
    六、完整项目示例(Node.js + MySQL + Nginx)

    项目结构
    1. myapp/
    2. ├── docker-compose.yml
    3. ├── nginx/
    4. │   ├── nginx.conf
    5. │   └── Dockerfile
    6. ├── app/
    7. │   ├── package.json
    8. │   ├── server.js
    9. │   └── Dockerfile
    10. └── .env
    复制代码
    docker-compose.yml
    1. version: '3.8'
    2. services:
    3.   nginx:
    4.     build: ./nginx
    5.     ports:
    6.       - "80:80"
    7.     depends_on:
    8.       - app
    9.     networks:
    10.       - frontend
    11.       - backend
    12.   app:
    13.     build: ./app
    14.     environment:
    15.       - NODE_ENV=production
    16.       - DB_HOST=db
    17.     networks:
    18.       - backend
    19.     depends_on:
    20.       db:
    21.         condition: service_healthy
    22.   db:
    23.     image: mysql:8.0
    24.     volumes:
    25.       - db_data:/var/lib/mysql
    26.     environment:
    27.       MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
    28.       MYSQL_DATABASE: myapp
    29.     secrets:
    30.       - db_root_password
    31.     networks:
    32.       - backend
    33.     healthcheck:
    34.       test: ["CMD-SHELL", "mysqladmin ping -h localhost"]
    35.       interval: 30s
    36.       timeout: 10s
    37.       retries: 3
    38. volumes:
    39.   db_data:
    40. networks:
    41.   frontend:
    42.   backend:
    43. secrets:
    44.   db_root_password:
    45.     file: .env
    复制代码
    app/Dockerfile
    1. FROM node:18-alpine
    2. WORKDIR /app
    3. COPY package*.json ./
    4. RUN npm install --production
    5. COPY . .
    6. CMD ["npm", "start"]
    复制代码
    nginx/Dockerfile
    1. FROM nginx:alpine
    2. COPY nginx.conf /etc/nginx/conf.d/default.conf
    复制代码
    nginx/nginx.conf
    1. server {
    2.     listen 80;
    3.     location / {
    4.         proxy_pass http://app:3000;
    5.         proxy_set_header Host $host;
    6.         proxy_set_header X-Real-IP $remote_addr;
    7.     }
    8. }
    复制代码
    .env
    1. DB_ROOT_PASSWORD=supersecret
    复制代码
    七、高级功能

    扩展配置
    1. # 扩展服务实例
    2. app:
    3.   deploy:
    4.     replicas: 3
    5.   resources:
    6.     limits:
    7.       cpus: '0.5'
    8.       memory: 512M
    复制代码
    多环境配置
    1. # docker-compose.override.yml(开发环境)
    2. version: '3.8'
    3. services:
    4.   app:
    5.     build: ./app
    6.     volumes:
    7.       - ./app:/app  # 挂载代码目录实现热更新
    8.     environment:
    9.       - NODE_ENV=development
    复制代码
    使用模板文件
    1. # docker-compose.yml
    2. services:
    3.   app:
    4.     image: myapp:${TAG}
    复制代码
    八、最佳实践


    • 使用
      1. .env
      复制代码
      文件管理敏感信息
    • 为不同环境创建独立的Compose文件(如docker-compose.prod.yml)
    • 使用健康检查确保服务启动顺序
    • 对持久化数据使用命名卷
    • 定期清理未使用的镜像和卷:
    1. docker system prune -a
    复制代码
    九、调试技巧

    查看容器状态:
    1. docker-compose ps
    复制代码
    检查网络配置:
    1. docker network inspect mynetwork
    复制代码
    验证配置文件:
    1. docker-compose config
    复制代码
    到此这篇关于Docker Compose 使用实例的文章就介绍到这了,更多相关Docker Compose 使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/server/340148hqa.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表