Docker Compose 与 Dockerfile

Date
Created
Jul 24, 2025 09:26 AM
Descrption
不断优化
Tags
项目工程配置
工具

notion image

Docker Compose 的作用

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。它解决了以下问题:
  • 简化多容器应用的部署和管理
  • 统一管理容器间的网络通信
  • 协调多个服务的启动顺序
  • 提供一键启动/停止整个应用栈的能力

docker-compose.yaml 的作用

docker-compose.yaml 是 Docker Compose 的配置文件,用于:

主要功能:

  • 定义服务架构:描述整个应用由哪些服务组成
  • 配置服务关系:定义服务间的依赖、网络连接
  • 统一管理:一个文件管理所有容器的配置

示例:

version: '3.8' services: web: build: . ports: - "8000:80" depends_on: - db environment: - DATABASE_URL=postgresql://user:pass@db:5432/mydb db: image: postgres:13 environment: - POSTGRES_DB=mydb - POSTGRES_USER=user - POSTGRES_PASSWORD=pass volumes: - postgres_data:/var/lib/postgresql/data volumes: postgres_data:

Dockerfile 的作用

Dockerfile 是用于构建单个镜像的指令文件:

主要功能:

  • 定义镜像构建过程:从基础镜像开始,逐步构建自定义镜像
  • 安装依赖:安装应用所需的软件包、依赖
  • 配置运行环境:设置环境变量、工作目录等

示例:

FROM node:16-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "start"]

两者的关系

┌─────────────────┐ ┌──────────────────────┐ │ Dockerfile │────▶│ Docker Image │ │ (构建单个镜像) │ │ (单个服务的镜像) │ └─────────────────┘ └──────────────────────┘ │ ▼ ┌─────────────────┐ ┌──────────────────────┐ │docker-compose │────▶│ Multi-Container │ │.yaml │ │ Application │ │(编排多个服务) │ │ (完整的应用系统) │ └─────────────────┘ └──────────────────────┘

实际工作流程

  1. 开发阶段:编写 Dockerfile 定义各个服务的镜像
  1. 集成阶段:编写 docker-compose.yaml 定义服务间关系
  1. 部署阶段:使用 docker-compose up 一键启动整个应用

常用命令:

# 启动所有服务 docker-compose up # 后台启动 docker-compose up -d # 停止所有服务 docker-compose down # 重新构建并启动 docker-compose up --build
总结:Dockerfile 负责"做蛋糕",docker-compose.yaml 负责"摆餐桌" - 前者定义单个服务如何构建,后者定义多个服务如何协同工作。