Inflearn brand logo image

인프런 커뮤니티 질문&답변

이석헌님의 프로필 이미지
이석헌

작성한 질문수

코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드

Redis로 디스코드 트리거 구현 및 이미지 자동 생성·업로드 자동화

redis node에서 timeout 에러발생

해결된 질문

작성

·

72

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 버전입니다
Screenshot from 2025-05-29 14-21-36.png.webp
.

답변 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 -d

docker-compose.yml이 수정되면 위에서 처럼 docker를 중지 후 다시 시작해야 합니다.

 

두번째 방법으로는 n8n 도커에 직접 extra_hostsdocker-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 서버와의 연결 문제가 원인입니다. 다음과 같은 몇 가지 점검 사항을 안내드리겠습니다:

  1. 포트 번호 확인: 기본적으로 Redis는 6379 포트를 사용합니다. Docker Compose 파일에서 “6379:6379”로 지정되어 있는지 확인하셨으므로, 클라이언트에서도 같은 포트를 사용하고 있는지 다시 확인해주세요.

  2. 네트워크 설정 확인: Docker Compose 파일에서 모든 서비스가 동일한 네트워크(demo)에 있는 것을 확인하세요. Redis 클라이언트가 동일한 네트워크를 통해 접근 가능한지 점검해야 합니다.

  3. 컨테이너 상태 확인: Redis 컨테이너가 정상적으로 실행 중인지 확인하시기 바랍니다.

    docker ps
    

    해당 명령어로 Redis가 목록에 있는지, 상태가 “Up”으로 나타나는지 확인하세요.

  4. 방화벽 설정 확인: 리눅스의 ufw(방화벽)가 활성화되어 있을 경우, Redis 포트(6379)를 허용해야 할 수 있습니다.

    sudo ufw allow 6379
    
  5. 네트워크 문제 확인: 로컬 머신이나 Docker 네트워크 사이의 연결 문제인가를 확인하기 위해, Redis IP나 localhost 대신 host.docker.internal을 시도해보는 것도 방법입니다.

해당 조치 이후에도 문제 해결이 어렵다면, 추가적인 로그나 오류 메시지를 제공해주시면 더 상세히 도와드리도록 하겠습니다.

관련된 유사한 문제를 논의하고 해결한 포럼 포스팅도 함께 공유합니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이석헌님의 프로필 이미지
이석헌

작성한 질문수

질문하기