인프런 커뮤니티 질문&답변
redis node에서 timeout 에러발생
해결된 질문
작성
·
82
0
volumes:
  n8n_storage:
  postgres_storage:
  ollama_storage:
  qdrant_storage:
  redis_storage:
networks:
  demo:
x-n8n: &service-n8n
  image: n8nio/n8n:latest
  networks: ['demo']
  environment:
    - N8N_SECURE_COOKIE=false
    - DB_TYPE=postgresdb
    - DB_POSTGRESDB_HOST=postgres
    - DB_POSTGRESDB_USER=${POSTGRES_USER}
    - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
    - N8N_DIAGNOSTICS_ENABLED=false
    - N8N_PERSONALIZATION_ENABLED=false
    - N8N_ENCRYPTION_KEY
    - N8N_USER_MANAGEMENT_JWT_SECRET
    - OLLAMA_HOST=ollama:11434
  env_file:
    - .env
x-ollama: &service-ollama
  image: ollama/ollama:latest
  container_name: ollama
  networks: ['demo']
  restart: unless-stopped
  ports:
    - 11434:11434
  volumes:
    - ollama_storage:/root/.ollama
x-init-ollama: &init-ollama
  image: ollama/ollama:latest
  networks: ['demo']
  container_name: ollama-pull-llama
  volumes:
    - ollama_storage:/root/.ollama
  entrypoint: /bin/sh
  environment:
    - OLLAMA_HOST=ollama:11434
  command:
    - "-c"
    - "sleep 3; ollama pull llama3.2"
services:
  postgres:
    image: postgres:16-alpine
    hostname: postgres
    networks: ['demo']
    restart: unless-stopped
    environment:
      - POSTGRES_USER
      - POSTGRES_PASSWORD
      - POSTGRES_DB
    volumes:
      - postgres_storage:/var/lib/postgresql/data
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
      interval: 5s
      timeout: 5s
      retries: 10
  n8n-import:
    <<: *service-n8n
    hostname: n8n-import
    container_name: n8n-import
    entrypoint: /bin/sh
    command:
      - "-c"
      - "n8n import:credentials --separate --input=/demo-data/credentials && n8n import:workflow --separate --input=/demo-data/workflows"
    volumes:
      - ./n8n/demo-data:/demo-data
    depends_on:
      postgres:
        condition: service_healthy
  n8n:
    <<: *service-n8n
    hostname: n8n
    container_name: n8n
    restart: unless-stopped
    ports:
      - 5678:5678
    volumes:
      - n8n_storage:/home/node/.n8n
      - ./n8n/demo-data:/demo-data
      - ./shared:/data/shared
    depends_on:
      postgres:
        condition: service_healthy
      n8n-import:
        condition: service_completed_successfully
  qdrant:
    image: qdrant/qdrant
    hostname: qdrant
    container_name: qdrant
    networks: ['demo']
    restart: unless-stopped
    ports:
      - 6333:6333
    volumes:
      - qdrant_storage:/qdrant/storage
  redis:
    image: redis:latest
    container_name: redis
    hostname: redis
    restart: unless-stopped
    ports:
      - "6379:6379"
    volumes:
      - redis_storage:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 1s
      timeout: 8s
      retries: 5
    command: ["redis-server", "--appendonly", "yes"]
  redisinsight:
    image: redislabs/redisinsight:latest
    container_name: redisinsight
    hostname: redisinsight
    restart: unless-stopped
    ports:
      - "8001:8001"
    depends_on:
      - redis
  ollama-cpu:
    profiles: ["cpu"]
    <<: *service-ollama
  ollama-gpu:
    profiles: ["gpu-nvidia"]
    <<: *service-ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
  ollama-gpu-amd:
    profiles: ["gpu-amd"]
    <<: *service-ollama
    image: ollama/ollama:rocm
    devices:
      - "/dev/kfd"
      - "/dev/dri"
  ollama-pull-llama-cpu:
    profiles: ["cpu"]
    <<: *init-ollama
    depends_on:
      - ollama-cpu
  ollama-pull-llama-gpu:
    profiles: ["gpu-nvidia"]
    <<: *init-ollama
    depends_on:
      - ollama-gpu
  ollama-pull-llama-gpu-amd:
    profiles: [gpu-amd]
    <<: *init-ollama
    image: ollama/ollama:rocm
    depends_on:
     - ollama-gpu-amd
위의 내용은 docker-compose.yml 이구요. redis node를 생성하는데 아래와 같이 에러발생 합니다. os는 우분투 24.04 lts desktop 버전입니다
.답변 3
0
아! 해결했습니다. 우분투 데스크탑의 경우는 redis 노드 host에 redis, host.docker.internal등을 입력하는 것이 아니라 docker의 inet 주소를 넣어니까 해결되네요. 고맙습니다
0
sh@sh:~/n8n/self-hosted-ai-starter-kit$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e3e6047104c redislabs/redisinsight:latest "./docker-entry.sh n…" 2 hours ago Up 2 hours 0.0.0.0:5540->5540/tcp, [::]:5540->5540/tcp nervous_perlman
e46d37fa8de5 n8nio/n8n:latest "tini -- /docker-ent…" 2 hours ago Up 2 hours 0.0.0.0:5678->5678/tcp, [::]:5678->5678/tcp n8n
7c92c86a0f92 redislabs/redisinsight:latest "./docker-entry.sh n…" 2 hours ago Up 2 hours 5540/tcp, 0.0.0.0:8001->8001/tcp, [::]:8001->8001/tcp redisinsight
3644d700050e qdrant/qdrant "./entrypoint.sh" 2 hours ago Up 2 hours 0.0.0.0:6333->6333/tcp, [::]:6333->6333/tcp, 6334/tcp qdrant
5c5036563c02 postgres:16-alpine "docker-entrypoint.s…" 2 hours ago Up 2 hours (healthy) 5432/tcp self-hosted-ai-starter-kit-postgres-1
2ec4f31db40b redis:latest "docker-entrypoint.s…" 2 hours ago Up 2 hours (healthy) 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis
46fd06a6f6a1 ollama/ollama:latest "/bin/ollama serve" 2 hours ago Up 2 hours 0.0.0.0:11434->11434/tcp, [::]:11434->11434/tcp ollama
sh@sh:~/n8n/self-hosted-ai-starter-kit$ docker ps 의 내용이고,sudo ufw allow 6379 은 Rules updated Rules updated(v6)나왔고 redis는 우분투 24.04 lts desktop에대한 앤소로픽의 대답이고 host.docker.internal은 window용이랍니다.위에서 시킨대로 제대로 했는데 역시 redis node에 timeout이라는 에러발생합니다
리눅스 환경인경우에서는 host.docker.internal 를 사용할 수 없습니다. 그래서 위의 상황에서 2가지 해결방법을 고민해볼 수 있는데 첫번째로 redis 를 같은 네트워크에 직접 묶어 주는 방법입니다.
redis:
    image: redis:latest
    container_name: redis
    hostname: redis
    restart: unless-stopped
    ports:
      - "6379:6379"
    volumes:
      - redis_storage:/data
    networks: ['demo']   # ✅ 이 줄을 반드시 추가하세요
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 1s
      timeout: 8s
      retries: 5
    command: ["redis-server", "--appendonly", "yes", "--bind", "0.0.0.0"]위의 예시에서 처럼 redis 를 n8n과 동일한 네트워크로 묶어주면 n8n에서 redis를 인식할 수 있습니다.
docker-compose down
docker-compose up -ddocker-compose.yml이 수정되면 위에서 처럼 docker를 중지 후 다시 시작해야 합니다.
두번째 방법으로는 n8n 도커에 직접 extra_hosts를 docker-compose.yml에 추가 할 수도 있습니다.
n8n:
    ...
    extra_hosts:
      - "host.docker.internal:host-gateway"이렇게 설정하면 host.docker.internal 을 사용할 수 있습니다.
또 한가지 방법으로는
docker network connect demo redis위와 같이 도커 명령어를 사용해서 redis를 직접 demo 네트워크에 연결 하는 방법도 있습니다. 다만 이 방법은 일회성이기 때문에 추후 docker compose down 하고 up 하면 설정 내용이 사라집니다.
위의 방법으로 해결이 되셨으면 좋겠습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 이석헌님.
redis node에서 발생한 “Connection timeout” 에러는 보통 Redis 서버와의 연결 문제가 원인입니다. 다음과 같은 몇 가지 점검 사항을 안내드리겠습니다:
포트 번호 확인: 기본적으로 Redis는 6379 포트를 사용합니다. Docker Compose 파일에서 “6379:6379”로 지정되어 있는지 확인하셨으므로, 클라이언트에서도 같은 포트를 사용하고 있는지 다시 확인해주세요.
네트워크 설정 확인: Docker Compose 파일에서 모든 서비스가 동일한 네트워크(
demo)에 있는 것을 확인하세요. Redis 클라이언트가 동일한 네트워크를 통해 접근 가능한지 점검해야 합니다.컨테이너 상태 확인: Redis 컨테이너가 정상적으로 실행 중인지 확인하시기 바랍니다.
docker ps해당 명령어로 Redis가 목록에 있는지, 상태가 “Up”으로 나타나는지 확인하세요.
방화벽 설정 확인: 리눅스의 ufw(방화벽)가 활성화되어 있을 경우, Redis 포트(6379)를 허용해야 할 수 있습니다.
sudo ufw allow 6379네트워크 문제 확인: 로컬 머신이나 Docker 네트워크 사이의 연결 문제인가를 확인하기 위해, Redis IP나
localhost대신host.docker.internal을 시도해보는 것도 방법입니다.
해당 조치 이후에도 문제 해결이 어렵다면, 추가적인 로그나 오류 메시지를 제공해주시면 더 상세히 도와드리도록 하겠습니다.
관련된 유사한 문제를 논의하고 해결한 포럼 포스팅도 함께 공유합니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





해결 되셨다니 다행입니다. 궁금하신 내용이 있으면 언제든 질문 주세요.