Docker Compose 从入门到精通,核心配置全覆盖

6 阅读2分钟

大家好,我是码剑客。作为后端与运维日常必备工具,Docker Compose 是多容器编排的核心,本文把高频配置、字段含义、避坑要点、完整示例一次性讲透,知识点密集、结构清晰,直接收藏复用。

一、Docker Compose 核心概念

  1. 定义:通过 docker-compose.yml 文件统一编排多个容器服务,实现一键启动、停止、重启、扩容整套应用环境;
  2. 核心优势:环境一致性、配置版本化、多服务依赖管理、简化运维命令;
  3. 核心常用命令: docker-compose up -d 后台启动服务 docker-compose down 停止并删除容器、网络 docker-compose logs -f 查看实时日志

二、完整标准配置结构(全字段覆盖)

services:
  app:
    image:
    build:
      context:
      dockerfile:
    ports:
    volumes:
    environment:
    depends_on:
    restart:
    command:
    networks:

networks:
volumes:

三、高频核心配置字段详解

1. 镜像与构建配置

  • image: mysql:8.0:指定镜像版本,规避自动升级风险;
  • build.context: ./:指定构建上下文目录;
  • build.dockerfile: Dockerfile.prod:指定自定义构建文件。

2. 端口与网络配置

  • ports: ["8080:80"]:主机与容器端口映射,对外提供访问;
  • expose: [3306]:仅容器内部互通,不暴露外网;
  • networks:自定义网桥,实现服务隔离通信。

3. 数据持久化配置

  • volumes: [./data:/var/lib/mysql]:目录挂载持久化,容器销毁数据不丢失;
  • 命名卷:全局可复用,适合生产环境。

4. 环境与依赖配置

  • environment:直接配置环境变量;
  • env_file: .env:加载外部配置文件,保护账号密码;
  • depends_on:控制服务启动顺序,避免应用先于数据库启动报错。

5. 运行重启策略

  • restart: always:异常自动重启(生产首选);
  • restart: on-failure:仅崩溃时重启;
  • restart: unless-stopped:手动停止后不再重启。

四、生产级完整示例(SpringBoot+MySQL+Redis)

services:
  mysql:
    image: mysql:8.0
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: app_db
    volumes:
      - mysql-data:/var/lib/mysql
    restart: always
    networks:
      - app-network

  redis:
    image: redis:alpine
    ports:
      - "6379:6379"
    volumes:
      - redis-data:/data
    restart: always
    networks:
      - app-network

  app:
    build: ./
    ports:
      - "8080:8080"
    depends_on:
      - mysql
      - redis
    restart: always
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

volumes:
  mysql-data:
  redis-data:

五、告别手写YAML,一键生成Docker配置

Docker Compose 语法严格、缩进敏感,手写极易出错,反复调试非常耗时。

我是码剑客,在我的同名网站中,内置了在线可视化 Docker Compose 配置生成工具,无需记忆语法、不用手动写缩进,可视化表单填写,实时生成标准配置,支持多场景模板、一键复制,开发部署效率直接拉满。