NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • Linux

  • Docker

    • 基本命令
    • Docker Compose Specification快速开始
      • 安装
      • 配置
        • 挂载
        • 硬件限制
        • 健康检查
      • 组网
      • 常用命令
      • 扩展:零停机部署
        • 安装
        • 配置
        • 命令
      • 参考
    • Docker Swarm
    • Docker容器默认时区导致MySQL时区问题错误
    • Docker - 概述
    • Docker - 基本概念
    • Docker - 自定义镜像(Dockerfile)
    • Docker Compose
    • Docker镜像仓库
    • 常用容器

  • 云原生

  • Kubernetes

  • KubeSphere

  • K3S

  • 笔记

  • PVE

  • 维修

  • DevOps

  • 云服务

  • 路由器

  • Hyper-V

  • Windows

  • macOS

  • 运维
  • Docker
NipGeihou
2023-09-28
目录

Docker Compose Specification快速开始

笔记

最新版的 Docker Compose 不叫 V2 也不叫 V3,成为 Compose Specification 。

参考 Overview | Docker Docs (opens new window)

# 安装

安装了 docker 就有

# 查询版本
docker compose version

# 配置

推荐的文件名: compose.yaml

services:
  project-front:
    image: ccr.ccs.tencentyun.com/xxx/project-front:latest
    ports:
      - "8081:8081"
    environment:
      SERVER_PORT: 8081
  project-admin:
    image: ccr.ccs.tencentyun.com/duomu/xxx/project-admin:latest
    ports:
      - "8080:8080"
    environment:
      SERVER_PORT: 8080
  • version:[可选],新版不再需要通过 version 判断版本。参考值 "3"
  • services:必填,容器组,可以有多个子元素
    • 自定义的容器名称:如 my-project-front
      • image:镜像名

# 挂载

Volumes | Docker Docs (opens new window)

services:
   db:
     image: mysql:latest
     volumes:
       - {宿主机绝对路径}:/var/lib/mysql

# 硬件限制








 
 
 
 
 
 
 
 

services:
  project-front:
    image: ccr.ccs.tencentyun.com/xxx/project-front:latest
    ports:
      - "8081:8081"
    environment:
      SERVER_PORT: 8081
    deploy:
      resources:
        limits:
          cpus: '0.001'
          memory: 50M
        reservations:
          cpus: '0.0001'
          memory: 20M

# 健康检查

services:
  my_service:
    image: my_image
    restart: always
    ports:
      - "8080:8080"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

# 组网

networks:
  default:
    external: true
    name: safeline-ce
  • name:为要加入的组网

# 常用命令

# 拉去镜像 再启动(常用于重新运行latest)
docker compose pull  && docker compose up -d # 方法1
docker compose up -d --build --pull always # 方法2

# 强制重新创建
docker compose up --force-recreate -d

# 扩展:零停机部署

wowu/docker-rollout: 🚀 Zero Downtime Deployment for Docker Compose (opens new window)

# 安装

# Create directory for Docker cli plugins
mkdir -p ~/.docker/cli-plugins

# Download docker-rollout script to Docker cli plugins directory
curl https://raw.githubusercontent.com/wowu/docker-rollout/main/docker-rollout -o ~/.docker/cli-plugins/docker-rollout

# Make the script executable
chmod +x ~/.docker/cli-plugins/docker-rollout

# 配置

services:
   nms-api:
    image: myservice-api:latest
#    container_name: myservice-api # 不能指定容器名
    environment:
      SERVER_PORT: 8080
      VIRTUAL_HOST: myservice-api.nipx.cn # 指定域名
      VIRTUAL_PORT: 8080  # 指定端口
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://myservice-api:8080 || exit 1"] # 这里要用myservice-api:8080  而不是localhost:8080
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 30s
   nginx-proxy:
    image: nginxproxy/nginx-proxy
    ports:
      - "8090:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

# 命令

docker rollout -f compose.yml <service-name>

# 参考

  • Overview of installing Docker Compose | Docker Docs (opens new window)
上次更新: 2025/04/17, 14:57:47
基本命令
Docker Swarm

← 基本命令 Docker Swarm→

最近更新
01
iSCSI服务搭建
05-10
02
磁盘管理与文件系统
05-02
03
网络测试 - iperf3
05-02
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式