해결된 질문
작성
·
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 버전입니다
.
답변 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_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
을 시도해보는 것도 방법입니다.
해당 조치 이후에도 문제 해결이 어렵다면, 추가적인 로그나 오류 메시지를 제공해주시면 더 상세히 도와드리도록 하겠습니다.
관련된 유사한 문제를 논의하고 해결한 포럼 포스팅도 함께 공유합니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
해결 되셨다니 다행입니다. 궁금하신 내용이 있으면 언제든 질문 주세요.