Docker Compose 单机编排实战:一份 yml 管好前后端全套服务

当一台服务器上跑的容器越来越多,手动 docker run 会变得难以维护:端口容易冲突、启动顺序靠人记、环境变量到处散。这时 Docker Compose 就是最合适的选择——一份 YAML 文件,把整套服务声明清楚。

为什么用 Compose

  • 声明式:服务、网络、卷、环境变量全部写在文件里,可版本管理
  • 一键启停:docker compose up -d 起全部,down 停全部
  • 自动组网:同一个 compose 项目内的服务可用服务名互相访问,不用记 IP
  • 适合单机:绝大多数中小项目一台机器就够了,比 K8s 简单得多

典型结构示例

services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    depends_on:
      - web
  web:
    build: ./web
    environment:
      - DB_HOST=mysql
    depends_on:
      - mysql
  mysql:
    image: mysql:8
    environment:
      - MYSQL_ROOT_PASSWORD=yourpass
    volumes:
      - dbdata:/var/lib/mysql

volumes:
  dbdata:

几个实用技巧

  1. 用 depends_on 控制启动顺序,但注意它只保证启动,不保证「就绪」,业务侧仍要做重试
  2. 数据一定挂卷,否则容器重建数据就没了
  3. 环境变量抽到 .env,敏感信息不要硬编码进 yml
  4. 生产环境用 compose v2(命令是 docker compose,不是老的 docker-compose)

小结

Compose 的定位很清晰:单机、多容器、开发与中小型生产环境。学会它,比自己写一堆 shell 脚本维护容器靠谱得多。

© 版权声明
THE END
喜欢就支持一下吧
点赞18 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容