Docker Compose 多容器编排实战

Docker 入门(五):Docker Compose 编排多容器应用

当一个应用包含数据库、缓存、后端和前端等多个服务时,逐个执行 docker run 很快会变得难以维护。Docker Compose 使用一个 YAML 文件描述服务、网络、端口、环境变量和数据卷,让整套环境可以一次启动和停止。

常用生命周期命令

在 compose.yaml 或 docker-compose.yml 所在目录执行:

bash 复制代码
docker compose up -d       # 创建并后台启动
docker compose logs -f     # 查看实时日志
docker compose stop        # 停止容器,保留容器
docker compose start       # 启动已停止的容器
docker compose down        # 停止并删除容器、网络

新版 Docker 推荐使用 docker compose 子命令;旧环境也可能使用独立的 docker-compose 命令。

Compose 文件核心字段

  • services:定义应用服务。
  • image:使用已有镜像;build:从 Dockerfile 构建镜像。
  • command:覆盖镜像默认命令。
  • container_name:指定容器名称,团队协作时应谨慎使用以避免重名。
  • ports:将宿主机端口映射到容器端口。
  • depends_on:声明启动顺序,不代表依赖服务已经真正就绪。
  • environment:传入环境变量,敏感值应使用外部密钥管理。
  • expose:只在 Compose 网络内声明服务端口,不发布到宿主机。
  • restart:配置容器异常退出后的重启策略。
  • volumes:挂载命名卷或宿主机目录,持久化数据和配置。
  • networks:定义服务之间的通信网络。
  • working_dir:设置容器内的工作目录。

一个简单示例

yaml 复制代码
services:
  web:
    image: nginx:1.27-alpine
    ports:
      - "8080:80"
    depends_on:
      - api
    networks: [app]

  api:
    build: ./api
    environment:
      DB_HOST: db
    networks: [app]

  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: change-me
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks: [app]

volumes:
  pgdata:

networks:
  app:

在同一个 Compose 网络中,服务可以直接使用服务名互相访问,例如 API 通过 db:5432 连接数据库。生产环境不要把示例密码直接提交到代码仓库,应改用 .env、Secrets 或外部配置中心。

Portainer:可选的图形化管理

Portainer 可以通过 Web 界面查看容器、镜像、网络和卷,适合学习和日常运维。部署时仍要为管理端设置强密码,并限制访问来源。

小结

Compose 的价值在于把多容器环境声明式地保存下来。掌握服务、网络、卷、端口和环境变量后,就可以用同一份配置复现开发环境,并进一步接入 CI/CD。

相关推荐
牛马工作号1 小时前
Mosquitto + ACME:从 Docker Compose 部署到 TLS 证书自动续期与加载
运维·docker·容器
Initialize-le4 小时前
Nginx 504 超时、499 一堆?网关排查法
运维·nginx
Android系统攻城狮6 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_delay调用流程与实战(七十二)
linux·运维·服务器·gstreamer音视频·音视频进阶
快乐的韭菜根根7 小时前
ubuntu 安装slurm并配置
linux·运维·ubuntu
U-Mail邮件系统7 小时前
自建邮箱服务器有哪些软件?三款主流邮件服务器软件推荐
运维·服务器
空空dream8 小时前
03 | 离线部署 FastAPI + Ollama(qwen2:0.5b):从 Docker 联调到 Kubernetes 验收
docker·ai·kubernetes·fastapi
天远数科9 小时前
零信任架构实战:基于天远贷前风险报告构建自动化消金信贷风控与多头共债排查网关
运维·人工智能·架构·自动化
别动我齐刘海10 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人
honsor10 小时前
机房IP化改造首选:以太网温湿度传感器,PoE供电+Modbus TCP一网搞定
linux·运维·服务器
星创易联10 小时前
PLC数据采集与远程运维平台:从边缘计算到集中监控
大数据·运维·边缘计算