
docker-compose.yml
services:
  web:  # 定义 Web 服务 
    image: nginx:latest  # 使用 Nginx 镜像 
    container_name: my_web  # 自定义容器名称 
    ports:
      - "80:80"  # 映射主机端口到容器端口 
    volumes:
      - ./html:/usr/share/nginx/html  # 挂载主机目录到容器 
    environment:  # 设置环境变量 
      - NGINX_HOST=example.com  
    networks:
      - my_network  # 连接到自定义网络 
    depends_on:  # 定义依赖关系 
      - db 
    restart: always  # 设置重启策略 
    logging:  # 配置日志 
      driver: json-file 
      options:
        max-size: "10m"
        max-file: "3"
    healthcheck:  # 定义健康检查 
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s 
      timeout: 10s 
      retries: 3 
    deploy:  # 资源限制(仅适用于 Swarm 模式)
      resources:
        limits:
          cpus: '0.5'
          memory: 512M 
 
  db:  # 定义数据库服务 
    build: # 使用指定目录Dockerfile 
      context: ./xxxx
      dockerfile: Dockerfile
    container_name: my_db  # 自定义容器名称 
    environment:  # 设置环境变量 
      MYSQL_ROOT_PASSWORD: password 
      MYSQL_DATABASE: mydb 
    volumes:
      - db_data:/var/lib/mysql  # 使用命名卷持久化数据 
    networks:
      - my_network  # 连接到自定义网络 
    healthcheck:  # 定义健康检查 
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s 
      timeout: 5s 
      retries: 3 
 
  redis:  # 定义 Redis 服务 
    image: redis:latest  # 使用 Redis 镜像 
    container_name: my_redis  # 自定义容器名称 
    ports:
      - "6379:6379"  # 映射主机端口到容器端口 
    networks:
      - my_network  # 连接到自定义网络 
    restart: unless-stopped  # 设置重启策略 
 
volumes:  # 定义命名卷 
  db_data:
    driver: local 
 
networks:  # 定义自定义网络 
  my_network:
    driver: bridge 配置项说明
services
- 定义容器服务,每个服务对应一个容器。
- 常用配置项: 
volumes
- 定义命名卷,用于持久化数据。
- 示例: - volumes: db_data: driver: local
networks
- 定义自定义网络,用于服务之间的通信。
- 示例: - networks: my_network: driver: bridge
restart
- no- 说明:默认值,容器不会自动重启。
- 适用场景:适用于不需要自动重启的容器。
 
- always- 说明:无论容器退出状态如何,都会自动重启。
- 适用场景:适用于必须保持运行的关键服务。
 
- on-failure- 说明:仅在容器以非零状态退出时重启。
- 适用场景:适用于需要处理错误并尝试恢复的服务。
 
- unless-stopped- 说明:容器会自动重启,除非用户手动停止它。
- 适用场景:适用于需要长期运行但允许手动停止的服务。
 
| 选项 | 说明 | 适用场景 | 
|---|---|---|
| no | 容器不会自动重启 | 不需要自动重启的容器 | 
| always | 无论退出状态如何,都会自动重启 | 必须保持运行的关键服务 | 
| on-failure | 仅在容器以非零状态退出时重启 | 需要处理错误并尝试恢复的服务 | 
| unless-stopped | 自动重启,除非用户手动停止 | 需要长期运行但允许手动停止的服务 | 
healthcheck
- 监控容器健康状态,确保服务正常运行。
- 示例: - healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 30s timeout: 10s retries: 3
deploy
- 配置资源限制(如 CPU、内存),仅适用于 Swarm 模式。
- 示例: - deploy: resources: limits: cpus: '0.5' memory: 512M
 lmcc-老马吃草的博客
                        lmcc-老马吃草的博客                     
                         
                         
                         
                         
                                         
                                         
                                         
                                         
                                        
评论已关闭