2026年2026.2.8:docker compose安装OpenClaw教程并接入飞书等国内应用

2026.2.8:docker compose安装OpenClaw教程并接入飞书等国内应用好的 根据您提供的信息 您当前位于 Windows 11 的 WSL Ubuntu 环境中 项目目录 em openclaw em project 已存在 但版本从 em 2026 em em em 3 em em em 2 em

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。

好的,根据您提供的信息,您当前位于Windows 11的WSL Ubuntu环境中,项目目录 ~/openclaw_project 已存在,但版本从 2026.3.28 升级到 2026.4.2 失败。您需要一个全新的、可复制的Docker部署脚本,用于重新部署 openclaw 2026.4.2 版本,集成DeepSeekAI和飞书

以下是一个综合解决方案,核心步骤是:备份现有配置,彻底清理旧的运行时,然后使用Docker Compose全新部署2026.4.2版本[ref_4]。

1. 项目准备与清理

首先,进入项目目录创建一个关键配置和数据的备份。由于OpenClaw仍在,我们只需清理容器、镜像和动态数据。

# 1. 进入项目目录 cd ~/openclaw_project # 2. 备份现有重要配置文件(如果存在) mkdir -p _backup_$(date +%Y%m%d) cp -f .env* docker-compose.yml docker-compose.override.yml _backup_$(date +%Y%m%d)/ 2>/dev/null || true cp -rf configs _backup_$(date +%Y%m%d)/ 2>/dev/null || true echo "配置文件已备份至: ~/openclaw_project/_backup_$(date +%Y%m%d)/" # 3. 停止移除所有相关的Docker容器、网络和卷 docker-compose down --volumes --remove-orphans 2>/dev/null || true # 确保移除可能残留的容器 docker rm -f openclaw_openclaw_1 openclaw_redis_1 openclaw_db_1 2>/dev/null || true # 4. 清理Node_modules和构建产物(如果是源码运行过) rm -rf node_modules logs/* .next .turbo 2>/dev/null || true # 5. 检查当前目录,确保核心项目文件(如源码)仍在 ls -la 

2. 编写Docker Compose部署脚本(docker-compose.yml

此为核心步骤。创建一个新的 docker-compose.yml 文件,定义包含OpenClaw应用、Redis和PostgreSQL服务的完整环境[ref_4][ref_6]。

# 创建或覆盖 docker-compose.yml 文件 cat > docker-compose.yml << 'EOF' version: '3.8' services: # PostgreSQL 数据库 postgres: image: postgres:16-alpine container_name: openclaw_db restart: unless-stopped environment: POSTGRES_USER: openclaw POSTGRES_PASSWORD: openclaw_password # 请在生产环境中更改! POSTGRES_DB: openclaw volumes: - postgres_data:/var/lib/postgresql/data - ./docker/services/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql:ro networks: - openclaw-network healthcheck: test: ["CMD-SHELL", "pg_isready -U openclaw"] interval: 10s timeout: 5s retries: 5 # Redis 缓存与消息队列 redis: image: redis:7-alpine container_name: openclaw_redis restart: unless-stopped command: redis-server --appendonly yes volumes: - redis_data:/data networks: - openclaw-network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 # OpenClaw应用 openclaw: # 关键:使用 2026.4.2 版本镜像,或从源码构建 # 方式一:使用官方镜像(如果存在) # image: openclaw/openclaw:2026.4.2 # 方式二:从本地目录构建(更可靠) build: context: . dockerfile: Dockerfile args: - BASE_IMAGE=node:22-alpine container_name: openclaw_app restart: unless-stopped depends_on: postgres: condition: service_healthy redis: condition: service_healthy ports: - "3000:3000" # Web界面 - "8080:8080" # API服务 environment: - NODE_ENV=production # 数据库配置(与上面Postgres对应) - DATABASE_URL=postgresql://openclaw:openclaw_password@postgres:5432/openclaw - REDIS_URL=redis://redis:6379/0 # DeepSeekAI API 配置 (必须设置) - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY:-YOUR_DEEPSEEK_API_KEY_HERE} # 飞书配置 (必须设置) - FEISHU_APP_ID=${FEISHU_APP_ID:-YOUR_FEISHU_APP_ID} - FEISHU_APP_SECRET=${FEISHU_APP_SECRET:-YOUR_FEISHU_APP_SECRET} - FEISHU_ENCRYPT_KEY=${FEISHU_ENCRYPT_KEY:-YOUR_FEISHU_ENCRYPT_KEY} - FEISHU_VERIFICATION_TOKEN=${FEISHU_VERIFICATION_TOKEN:-YOUR_FEISHU_VERIFICATION_TOKEN} volumes: # 挂载配置文件目录和上传目录 - ./configs:/app/configs:ro - ./uploads:/app/uploads - ./logs:/app/logs networks: - openclaw-network # 健康检查与启动命令 healthcheck: test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/health', (r)=>{process.exit(r.statusCode===200?0:1)})"] interval: 30s timeout: 10s retries: 3 command: > sh -c " echo '等待数据库就绪...' && npx wait-port -t 30000 postgres:5432 && npx wait-port -t 10000 redis:6379 && echo '依赖服务就绪,启动应用...' && npm run start:prod " networks: openclaw-network: driver: bridge volumes: postgres_data: name: openclaw_postgres_data redis_data: name: openclaw_redis_data EOF 

3. 创建环境变量配置文件(.env

为了安全地管理API密钥,强烈建议使用 .env 文件[ref_4]。

# 创建 .env 文件,请务必替换其中的占位符!!! cat > .env << 'EOF' # !!!警告:请用您自己的真实密钥替换以下值 !!! # ====== DeepSeekAI 配置 ====== # 访问 https://platform.deepseek.com/api-keys 创建 DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # ====== 飞书开放平台配置 ====== # 访问 https://open.feishu.cn/app 创建应用获取 FEISHU_APP_ID=cli_xxxxxxxxxxxxxx FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxx FEISHU_ENCRYPT_KEY=xxxxxxxxxxxxxxxxxxxxx FEISHU_VERIFICATION_TOKEN=xxxxxxxxxxxxxxxxxxxxx # ====== 数据库配置 (应与docker-compose.yml中的一致) ====== POSTGRES_USER=openclaw POSTGRES_PASSWORD=openclaw_password # 生产环境务必修改! POSTGRES_DB=openclaw DATABASE_URL=postgresql://openclaw:openclaw_password@postgres:5432/openclaw # ====== 应用基础配置 ====== NODE_ENV=production PORT=3000 API_PORT=8080 EOF # 保护 .env 文件权限 chmod 600 .env echo "环境变量文件 .env 已创建,请立即用您的真实API密钥编辑它!" 

4. 创建必要的支撑文件

确保目录结构和初始化脚本存在。

# 创建配置文件目录 mkdir -p configs docker/services/postgres # 创建PostgreSQL初始化SQL脚本(可选,用于初始表结构) cat > docker/services/postgres/init.sql << 'EOF' -- OpenClaw 数据库初始化脚本 -- 2026.4.2 版本 -- 如果有特定的初始化SQL,可以放在这里。 -- 通常,应用启动时会通过迁移工具(如Prisma)自动建表。 SELECT 'OpenClaw Database Initialized.' AS message; EOF # 如果项目根目录没有Dockerfile,创建一个基础版本用于构建 if [ ! -f Dockerfile ]; then cat > Dockerfile << 'EOF' ARG BASE_IMAGE=node:22-alpine FROM ${BASE_IMAGE} AS builder WORKDIR /app # 复制 package.json 等文件 COPY package*.json ./ COPY pnpm-lock.yaml* ./ # 安装 pnpm (如果使用) RUN npm install -g pnpm RUN pnpm install --frozen-lockfile # 复制源码构建 COPY . . RUN pnpm run build # 生产阶段 FROM ${BASE_IMAGE} WORKDIR /app # 复制依赖和构建产物 COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/.next ./.next COPY --from=builder /app/public ./public COPY --from=builder /app/package.json ./ # 暴露端口 EXPOSE 3000 8080 # 启动命令(会被docker-compose中的command覆盖) CMD ["npm", "run", "start"] EOF echo “Dockerfile 已创建。” fi 

5. 一键部署与验证脚本

将上述所有步骤整合成一个可执行的部署脚本。

# 创建一键部署脚本 deploy.sh cat > deploy.sh << 'EOF' #!/bin/bash set -e # 遇到错误即停止 echo "========== OpenClaw 2026.4.2 全新Docker部署脚本 ==========" echo "目标:WSL2 Ubuntu + Docker + DeepSeekAI + 飞书" echo "当前目录: $(pwd)" echo "" # 第一步:环境检查 echo "[1/5] 检查Docker环境..." if ! command -v docker &> /dev/null; then echo "错误: Docker安装。请参考 https://docs.docker.com/engine/install/ 安装。" exit 1 fi if ! command -v docker-compose &> /dev/null; then echo "警告: docker-compose安装,尝试使用‘docker compose’插件。" DOCKER_COMPOSE_CMD="docker compose" else DOCKER_COMPOSE_CMD="docker-compose" fi docker version && echo "Docker检查通过。" # 第二步:清理旧环境 echo "" echo "[2/5] 清理旧容器与网络..." $DOCKER_COMPOSE_CMD down --volumes --remove-orphans 2>/dev/null || true docker network rm openclaw-network 2>/dev/null || true echo "旧环境清理完成。" # 第三步:加载环境变量 echo "" echo "[3/5] 加载环境配置..." if [ ! -f .env ]; then echo "错误: 未找到 .env 文件。请从 .env.example 复制填写您的密钥。" exit 1 fi source .env # 检查关键API密钥是否已配置占位符 if grep -q "YOUR_DEEPSEEK_API_KEY_HERE" .env || grep -q "YOUR_FEISHU_APP_ID" .env; then echo "!!!严重警告 !!!" echo ".env 文件中存在未修改的示例密钥。部署将失败!" echo "请立即编辑 .env 文件,填入从 DeepSeek 和飞书开放平台获取的真实密钥。" exit 1 fi echo "环境变量检查通过。" # 第四步:构建启动服务 echo "" echo "[4/5] 启动Docker服务栈..." $DOCKER_COMPOSE_CMD up -d --build --force-recreate echo "服务启动命令已执行。" # 第五步:验证部署 echo "" echo "[5/5] 验证服务状态..." echo "等待服务就绪(约30秒)..." sleep 30 echo "--- 容器运行状态 ---" $DOCKER_COMPOSE_CMD ps echo "" echo "--- 检查应用日志(最近10行) ---" $DOCKER_COMPOSE_CMD logs --tail=10 openclaw echo "" echo "--- 健康检查 ---" if curl -f http://localhost:3000/health 2>/dev/null; then echo "✅ OpenClaw 应用健康检查通过!" else echo "⚠️ 健康检查端点未响应,请查看详细日志:$DOCKER_COMPOSE_CMD logs openclaw" fi echo "" echo "========== 部署完成! ==========" echo "访问地址:" echo " - Web控制台: http://localhost:3000" echo " - API服务: http://localhost:8080" echo "" echo "故障排查:" echo " 1. 查看完整日志: $DOCKER_COMPOSE_CMD logs -f" echo " 2. 进入容器: docker exec -it openclaw_app sh" echo " 3. 检查数据库: docker exec -it openclaw_db psql -U openclaw" EOF # 赋予脚本执行权限 chmod +x deploy.sh echo “一键部署脚本 ‘deploy.sh’ 已创建。” 

6. 执行部署与后续操作

现在,您可以按顺序执行以下命令来完成部署:

# 1. 编辑 .env 文件,填入真实的 DeepSeek API Key 和飞书应用凭证 # 使用 nano 或 vim 编辑器 nano .env # 或者使用 cat 命令直接输出提示 echo “请确保已编辑 .env 文件,填充正确的密钥。” # 2. 运行一键部署脚本 ./deploy.sh # 3. (可选) 实时查看所有服务的日志 docker-compose logs -f # 4. (可选) 如果部署失败,检查特定服务日志 docker-compose logs openclaw # 或检查数据库连接 docker exec openclaw_app node -e "const { Client } = require(‘pg’); const client = new Client({ connectionString: process.env.DATABASE_URL }); client.connect().then(() => { console.log(‘✅ 数据库连接成功’); client.end(); }).catch(err => console.error(‘❌ 数据库连接失败:’, err));" 

总结与关键点

| 步骤 | 文件/命令 | 关键作用与说明 | | :— | :— | :— | | 1. 备份与清理 | docker-compose down --volumes | 清除旧版本所有数据,避免冲突[ref_5]。 | | 2. 编排定义 | docker-compose.yml | 定义了2026.4.2版本的服务栈(OpenClaw, Postgres, Redis)及其网络、依赖关系[ref_4]。 | | 3. 密钥管理 | .env 文件 | 安全存储所有API密钥(DeepSeek、飞书、数据库),切勿提交至版本控制系统[ref_4][ref_6]。 | | 4. 构建与启动 | deploy.sh | 自动化执行环境检查、清理、构建和健康检查的脚本。 | | 5. 验证 | curl http://localhost:3000/health | 确认应用是否成功启动提供服务。 |

关键注意事项: 1. 密钥替换:脚本成功运行的绝对前提是您将 .env 文件中的 YOUR_* 占位符全部替换为从 DeepSeek平台 和 飞书开放平台 获取的真实凭证[ref_4][ref_6]。 2. 端口占用:确保宿主机(Windows 11)的 30008080 端口未被其他程序占用。 3. WSL2 Docker集成:请确认您的WSL2 Ubuntu内已正确安装启动了Docker引擎,且当前用户有权限执行 docker 命令[ref_1][ref_3]。 4. 升级问题根源:如果旧版本是源码运行,而新版本使用Docker,这种架构变更本身就是最彻底的“重新开始”,能最大程度避免因环境差异(如Node.js版本、全局依赖)导致的升级失败[ref_4]。

小讯
上一篇 2026-04-25 10:06
下一篇 2026-04-25 10:04

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/274153.html