Tengo un archivo Docker Compose que inicia dos servicios: Redis y Redis Commander. Usar el puerto Redis predeterminado 6379 funciona bien. Después de cambiar el puerto de Redis a 6380 , Redis Commander ya no puede conectarse a Redis.
Error:
setUpConnection Redis error Error: connect ECONNREFUSED 172.19.0.2:6380 Este es el archivo docker-compose.yml :
version: '3.7' services: redis: container_name: redis hostname: redis image: sameersbn/redis:4.0.9-2 ports: - "6380:6379" expose: - "6380" volumes: - type: volume source: redis-data target: /data restart: always redis-commander: container_name: redis-commander hostname: redis-commander image: rediscommander/redis-commander:latest restart: always environment: - REDIS_HOSTS=local:redis:6380 ports: - "8082:8081" volumes: redis-data: {} Puedo conectarme a Redis en el puerto 6380 usando el siguiente código de nodo:
import redis from 'redis' const config = { host: '127.0.0.1', port: 6380, no_ready_check: true } const client = redis.createClient(config.port, config.host) client.set('expireName', 'nidkil', (err, reply) => { if (err) { console.error('Error occurred:', err) } else { console.log('Response:', reply) } }) Si vuelvo a cambiar el puerto a 6379 en docker-compose.yml , Redis Commander puede conectarse.
¿Alguna sugerencia sobre cómo puedo hacer que Redis Commander se conecte a Redis en el puerto 6380 ?
La respuesta de @Mihai me ayudó a encontrar la solución. Necesitaba cambiar el puerto en el que se ejecuta Redis, así como el puerto expuesto. Este es el archivo de redacción de Docker en funcionamiento.
version: '3.7' services: redis: container_name: redis hostname: redis image: sameersbn/redis:4.0.9-2 command: --port 6380 ports: - "6380:6380" expose: - "6380" volumes: - type: volume source: redis-data target: /data restart: always redis-commander: container_name: redis-commander hostname: redis-commander image: rediscommander/redis-commander:latest restart: always environment: - REDIS_HOSTS=local:redis:6380 ports: - "8082:8081" volumes: redis-data: {}Cambió el puerto expuesto en el host. No cambió el puerto interno en el contenedor. Su instancia de Redis continúa ejecutándose en el puerto predeterminado (6379).
También esta declaración expose: - "6380" se puede omitir ya que no es útil.