DOCS/troubleshooting/250716_gemini_cli_slack_network_issues.md
2025-08-13 14:04:25 +09:00

4.1 KiB
Executable File

Gemini CLI, Slack 연결, 네트워크 통합 문제 해결

날짜: 2025-07-16
작업자: Claude & happybell

개요

rb8001과 rb10508_test 컨테이너에서 발생한 여러 문제들을 해결하는 과정

1. Gemini CLI 실행 문제

증상

  • rb8001: "Gemini CLI가 설치되지 않았습니다" 에러
  • rb10508_test (test-api-container): 정상 작동
  • 에러: exec: "gemini": executable file not found in $PATH

원인 분석

  • Docker 컨테이너는 Python 기반으로 Node.js가 포함되지 않음
  • 서버에는 이미 설치되어 있지만 컨테이너 내부에서 접근 불가
  • test-api-container는 Node.js를 마운트하여 사용 중

해결 방법

1. docker-compose.yml에 Node.js 마운트 추가

volumes:
  # 기존 볼륨들...
  # Node.js 및 Gemini CLI 마운트
  - /home/admin/.nvm/versions/node/v24.4.0:/usr/local/node:ro

environment:
  # 기존 환경변수들...
  # Node.js PATH 추가
  - PATH=/usr/local/node/bin:$PATH

2. gemini_service.py에서 절대 경로 사용

# 기존
cmd = ["gemini", "-m", "gemini-2.5-flash", "-p", full_prompt]

# 수정
cmd = ["/usr/local/node/bin/gemini", "-m", "gemini-2.5-flash", "-p", full_prompt]

2. Slack 연결 문제

증상

  • rb10508_test 컨테이너 시작은 성공하지만 Slack 대화 불가
  • 에러: AttributeError: 'Settings' object has no attribute 'USE_ASYNC_RESPONSE'

원인

  • app/api/slack.py에서 settings.USE_ASYNC_RESPONSE 참조
  • app/core/config.py의 Settings 클래스에 해당 속성 미정의

해결 방법

config.py의 Settings 클래스에 추가:

# Application Configuration
DEBUG: bool = True
LOG_LEVEL: str = "INFO"
MAX_MEMORY_SIZE: int = 1000
USE_ASYNC_RESPONSE: bool = True  # 추가

3. 네트워크 통합 문제

배경

  • 로빙들이 frontend-backend와 상태를 주고받아야 함
  • Docker 네트워크 격리로 인해 통신 불가

현황

  • frontend-backend-1: appnet 네트워크
  • rb8001: host 네트워크 (보안 취약)
  • rb10508_test: 자체 bridge 네트워크 (격리됨)

해결 방법

rb10508_test/docker-compose.yml

services:
  test-api:
    # ...
    networks:
      - default
      - appnet

networks:
  appnet:
    external: true

rb8001/docker-compose.yml

services:
  rb8001:
    # network_mode: host 제거
    networks:
      - appnet
    ports:
      - "8001:8001"

networks:
  appnet:
    external: true

장점

  • 보안 향상 (host 네트워크 제거)
  • 선택적 컨테이너 간 통신
  • backend와 안전한 상태 공유 가능

4. CI/CD 경로 문제

증상

  • GitHub Actions 실패: /home/admin/test_api: 그런 파일이나 디렉터리가 없습니다

원인

  • 디렉토리 구조 변경: test_api → rb10508_test
  • CI/CD 워크플로우가 구 경로 참조

해결 방법

.gitea/workflows/cicd.yml 수정:

  • /home/admin/test_api/home/admin/rb10508_test
  • 코드 복사 경로를 rb8001과 동일하게 변경:
    cp -r /home/admin/.cache/act/*/hostexecutor/* /home/admin/rb10508_test/
    

적용 순서

  1. 로컬에서 코드 수정 및 푸시
  2. 서버에서 .env 파일 확인/생성
  3. 기존 컨테이너 정리:
    docker stop test-api-container
    docker rm test-api-container
    
  4. 새 컨테이너 시작:
    cd /home/admin/rb8001
    docker-compose down && docker-compose up -d
    
    cd /home/admin/rb10508_test
    docker-compose up -d
    

검증

# Gemini CLI 확인
docker exec rb8001 /usr/local/node/bin/gemini --version
docker exec rb10508_test /usr/local/node/bin/gemini --version

# 네트워크 확인
docker network inspect appnet

# Slack 대화 테스트
# Slack에서 @Ro-being, @Ro-being_test로 대화

교훈

  1. 컨테이너 환경 고려: 서버에 설치된 도구가 컨테이너에서는 없을 수 있음
  2. 설정 동기화: 새 기능 추가 시 모든 관련 파일 업데이트 필요
  3. 네트워크 설계: 초기부터 컨테이너 간 통신 고려
  4. 경로 일관성: CI/CD 설정 시 디렉토리 구조 변경 반영