From 5cab38c7f1c699f228d9a4bef7fb446adb079c1c Mon Sep 17 00:00:00 2001 From: hailin Date: Sun, 11 Jan 2026 23:41:49 -0800 Subject: [PATCH] =?UTF-8?q?fix(deploy-mining):=20=E4=BF=AE=E6=AD=A3=20Dock?= =?UTF-8?q?er=20=E5=AE=B9=E5=99=A8=E5=90=8D=E7=A7=B0=E5=92=8C=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=87=AD=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修正 POSTGRES_CONTAINER 为 rwa-postgres (匹配 docker-compose.yml) - 修正 KAFKA_CONTAINER 为 rwa-kafka - 修正 POSTGRES_USER 为 rwa_user - 修正 POSTGRES_PASSWORD 为 rwa_secure_password - 修复 CDC offset 重置命令使用正确的容器名和命令格式 解决 full-reset 无法删除数据库和重置 CDC offset 的问题。 Co-Authored-By: Claude Opus 4.5 --- backend/services/deploy-mining.sh | 94 ++++++++++++++++++++----------- 1 file changed, 62 insertions(+), 32 deletions(-) diff --git a/backend/services/deploy-mining.sh b/backend/services/deploy-mining.sh index f956d9e7..c1ba8a66 100755 --- a/backend/services/deploy-mining.sh +++ b/backend/services/deploy-mining.sh @@ -212,18 +212,18 @@ load_env() { log_warn "No .env file found, using defaults" fi - # Set defaults + # Set defaults (match docker-compose.yml settings) POSTGRES_HOST="${POSTGRES_HOST:-localhost}" POSTGRES_PORT="${POSTGRES_PORT:-5432}" - POSTGRES_USER="${POSTGRES_USER:-postgres}" - POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-postgres}" + POSTGRES_USER="${POSTGRES_USER:-rwa_user}" + POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-rwa_secure_password}" KAFKA_BROKERS="${KAFKA_BROKERS:-localhost:9092}" REDIS_HOST="${REDIS_HOST:-localhost}" REDIS_PORT="${REDIS_PORT:-6379}" - # Docker container names - POSTGRES_CONTAINER="${POSTGRES_CONTAINER:-postgres}" - KAFKA_CONTAINER="${KAFKA_CONTAINER:-kafka}" + # Docker container names (match docker-compose.yml container_name) + POSTGRES_CONTAINER="${POSTGRES_CONTAINER:-rwa-postgres}" + KAFKA_CONTAINER="${KAFKA_CONTAINER:-rwa-kafka}" } # =========================================================================== @@ -630,22 +630,36 @@ sync_reset() { # Reset offsets log_step "Resetting consumer group offsets" - kafka-consumer-groups.sh --bootstrap-server "$KAFKA_BROKERS" \ - --group "$CDC_CONSUMER_GROUP" \ - --reset-offsets \ - --to-earliest \ - --all-topics \ - --execute 2>/dev/null || { - # Try with docker - docker exec -it kafka kafka-consumer-groups.sh --bootstrap-server localhost:9092 \ + + local reset_success=false + + # Try local kafka-consumer-groups.sh first + if command -v kafka-consumer-groups.sh &>/dev/null; then + kafka-consumer-groups.sh --bootstrap-server "$KAFKA_BROKERS" \ --group "$CDC_CONSUMER_GROUP" \ --reset-offsets \ --to-earliest \ --all-topics \ - --execute 2>/dev/null || log_warn "Could not reset offsets automatically" - } + --execute 2>/dev/null && reset_success=true + fi + + # Try docker exec if local failed + if [ "$reset_success" = false ] && docker ps --format '{{.Names}}' 2>/dev/null | grep -q "^${KAFKA_CONTAINER}$"; then + log_info "Using Docker container: $KAFKA_CONTAINER" + docker exec "$KAFKA_CONTAINER" kafka-consumer-groups --bootstrap-server localhost:9092 \ + --group "$CDC_CONSUMER_GROUP" \ + --reset-offsets \ + --to-earliest \ + --all-topics \ + --execute 2>&1 && reset_success=true + fi + + if [ "$reset_success" = true ]; then + log_success "CDC consumer offsets reset to beginning" + else + log_warn "Could not reset offsets automatically" + fi - log_success "CDC consumer offsets reset to beginning" log_info "Start contribution-service to begin syncing from the beginning" } @@ -655,13 +669,20 @@ sync_status() { echo -e "${BOLD}Consumer Group:${NC} $CDC_CONSUMER_GROUP" echo "" - kafka-consumer-groups.sh --bootstrap-server "$KAFKA_BROKERS" \ - --group "$CDC_CONSUMER_GROUP" \ - --describe 2>/dev/null || { - docker exec -it kafka kafka-consumer-groups.sh --bootstrap-server localhost:9092 \ + # Try local first, then docker + if command -v kafka-consumer-groups.sh &>/dev/null; then + kafka-consumer-groups.sh --bootstrap-server "$KAFKA_BROKERS" \ --group "$CDC_CONSUMER_GROUP" \ - --describe 2>/dev/null || log_warn "Could not get consumer group status" - } + --describe 2>/dev/null && return 0 + fi + + if docker ps --format '{{.Names}}' 2>/dev/null | grep -q "^${KAFKA_CONTAINER}$"; then + docker exec "$KAFKA_CONTAINER" kafka-consumer-groups --bootstrap-server localhost:9092 \ + --group "$CDC_CONSUMER_GROUP" \ + --describe 2>&1 || log_warn "Could not get consumer group status" + else + log_warn "Kafka container '$KAFKA_CONTAINER' not found" + fi } # =========================================================================== @@ -706,19 +727,28 @@ full_reset() { db_migrate log_step "Step 5/6: Resetting CDC consumer offsets..." - kafka-consumer-groups.sh --bootstrap-server "$KAFKA_BROKERS" \ - --group "$CDC_CONSUMER_GROUP" \ - --reset-offsets \ - --to-earliest \ - --all-topics \ - --execute 2>/dev/null || { - docker exec kafka kafka-consumer-groups.sh --bootstrap-server localhost:9092 \ + # Try local kafka-consumer-groups.sh first, then docker exec + if command -v kafka-consumer-groups.sh &>/dev/null; then + kafka-consumer-groups.sh --bootstrap-server "$KAFKA_BROKERS" \ --group "$CDC_CONSUMER_GROUP" \ --reset-offsets \ --to-earliest \ --all-topics \ - --execute 2>/dev/null || log_warn "Could not reset offsets, may need manual reset" - } + --execute 2>/dev/null && log_success "CDC offsets reset" || log_warn "Local kafka-consumer-groups.sh failed" + fi + + # Try docker exec with the correct container name + if docker ps --format '{{.Names}}' 2>/dev/null | grep -q "^${KAFKA_CONTAINER}$"; then + log_info "Resetting offsets via Docker container: $KAFKA_CONTAINER" + docker exec "$KAFKA_CONTAINER" kafka-consumer-groups --bootstrap-server localhost:9092 \ + --group "$CDC_CONSUMER_GROUP" \ + --reset-offsets \ + --to-earliest \ + --all-topics \ + --execute 2>&1 || log_warn "Could not reset offsets via Docker" + else + log_warn "Kafka container '$KAFKA_CONTAINER' not found. Manual offset reset may be needed." + fi log_step "Step 6/6: Starting 2.0 services..." for service in "${MINING_SERVICES[@]}"; do