Ejecuté un contenedor redis usando este comando: docker run -d --name redis -p 6379:6379 redis .
y ejecuté mi aplicación Django usando este comando: docker run -it -p 8000:8000 voucher .
y mi URL de redis de conexión es redis://redis:6379/1 .
Pero parece que no puedo conectarme a redis aquí está mi error: redis.exceptions.ConnectionError: Error -2 connecting to redis:6379. Name or service not known.
PD: no estoy usando docker-compose
Ambos contenedores deben estar en la misma Docker network para poder comunicarse a través de los nombres de los contenedores.
docker run -d --name redis --network your-network -p 6379:6379 redis docker run -it --network your-network -p 8000:8000 voucherLo solucioné cambiando la URL de mi conexión redis a redis://172.17.0.2:6379/1. Pero ¿por qué es eso? ¿Cómo puedo usar nombres de contenedores en lugar de direcciones IP?
Esta es su IP de host. Tienes algunas formas de resolver tu problema.
1 - Use la IP codificada como lo hizo.
2 - Use el enlace de la ventana acoplable para conectar aplicaciones como:
docker run --name my-redis-application --link my-redis-container:redis -d centos3 - Puede crear un redis.conf con el siguiente contenido:
bind 0.0.0.0y usarlo en el inicio como:
docker run -v $(pwd):/usr/local/etc/redis/ --name redis -p 6379:6379 -d redis redis-server /usr/local/etc/redis/redis.conf4 - Puede usar docker-compose para vincular mejor, como en el n. ° 2.
Creo que la mejor opción es docker-compose. si te gusta usar docker-compose aquí está la respuesta.
docker-compose.yml
version: "3.8" services : redis: image : redis container_name : redis restart : unless-stopped ports: - 6379:6379 voucher: image : voucher ports: - 8000:8000 depends_on: - redisahora puede conectarse a Redis usando el nombre de servicio "redis".