运行时依赖
安装命令
点击复制本土化适配说明
Docker Deploy — Docker 部署 安装说明: 安装命令:["openclaw skills install docker-deploy"]
技能文档
name: Docker 部署 description: Docker 环境搭建、Compose 编排、容器化部署一条龙。从单机到集群,从开发到生产。 metadata: OpenClaw: emoji: 🐳 requires: bins: - docker - docker-compose env: []
我能做什么 场景 说明 🏗️ Docker 安装 适配 Ubuntu/Debian/CentOS,一键安装 Docker Engine 📦 Compose 编排 编写 docker-compose.yml,多服务协同 🚀 一键部署 常见应用一行命令部署(Nginx、MySQL、PostgreSQL、Redis、MongoDB) 🔄 CI/CD 集成 Dockerfile 优化、多阶段构建、镜像瘦身 🛡️ 安全最佳实践 非 root 运行、镜像扫描、资源限制 📊 监控日志 容器日志管理、资源监控、健康检查 快速上手 安装 Docker # Ubuntu/Debian curl -fsSL https://获取.docker.com | sh sudo usermod -aG docker $USER
# 验证 docker --version docker 运行 hello-world
常见应用一行起 # Nginx docker 运行 -d --name 网页 -p 80:80 nginx:alpine
# PostgreSQL docker 运行 -d --name db -e POSTGRES_PASSWORD=secret -p 5432:5432 postgres:16-alpine
# Redis docker 运行 -d --name 缓存 -p 6379:6379 redis:7-alpine
# MySQL docker 运行 -d --name mysql -e MYSQL_ROOT_PASSWORD=secret -p 3306:3306 mysql:8
Docker Compose 经典模板
网页 + DB 组合:
version: '3.8' 服务s: 网页: image: nginx:alpine ports: - "80:80" volumes: - ./html:/usr/分享/nginx/html - ./nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - 应用 re启动: always
应用: build: . 环境: - DB_HOST=db - DB_USER=应用 - DB_PASSWORD=secret depends_on: - db re启动: always
db: image: postgres:16-alpine volumes: - pgdata:/var/lib/postgresql/data 环境: - POSTGRES_DB=应用 - POSTGRES_USER=应用 - POSTGRES_PASSWORD=secret re启动: always
volumes: pgdata:
Node.js 全栈:
version: '3.8' 服务s: 应用: build: 上下文: . tar获取: production ports: - "3000:3000" 环境: - NODE_ENV=production - DATABASE_URL=postgres://user:pass@db:5432/应用 depends_on: - db - redis re启动: always
db: image: postgres:16-alpine volumes: - postgres_data:/var/lib/postgresql/data 环境: POSTGRES_DB: 应用 POSTGRES_USER: user POSTGRES_PASSWORD: pass re启动: always
redis: image: redis:7-alpine volumes: - redis_data:/data re启动: always
nginx: image: nginx:alpine ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf - ./ssl:/etc/nginx/ssl - ./cert机器人/www:/var/www/cert机器人 depends_on: - 应用 re启动: always
volumes: postgres_data: redis_data:
Dockerfile 最佳实践 # 多阶段构建 FROM node:20-alpine AS 构建器 WORKDIR /应用 COPY package.json ./ 运行 npm ci --only=production COPY . . 运行 npm 运行 build
# 生产镜像 FROM node:20-alpine AS production WORKDIR /应用 运行 添加group -g 1001 应用 && 添加user -u 1001 -G 应用 -s /bin/sh -D 应用 COPY --from=构建器 /应用/dist ./dist COPY --from=构建器 /应用/node_模块s ./node_模块s COPY package.json ./ USER 应用 EXPOSE 3000 CMD ["node", "dist/索引.js"]
镜像瘦身技巧 做法 效果 使用 alpine 基础镜像 从 ~1GB 降到 ~100MB 多阶段构建 构建依赖不进入最终镜像 && rm -rf /var/缓存/apk/* 清理包管理器缓存 --no-安装-recommends 不装推荐包 合并 运行 命令 减少镜像层数 安全清单 容器不要以 root 运行 限制容器内存 (--memory=512m) 限制容器 CPU (--cpus=0.5) 启用日志轮转 (--记录-opt max-size=10m) 镜像定期更新扫描 敏感信息用 secrets 管理,不要写死 不暴露不必要的端口 故障排查 # 查看容器日志 docker 记录s -f contAIner_name
# 进入容器调试 docker exec -it contAIner_name sh
# 查看容器资源占用 docker stats
# 清理无用资源 docker 系统 p运行e -a
# 查看网络 docker network ls docker network inspect bridge