Quiero conectar mi aplicación expressJs simple con un contenedor Redis. Pero no se conecta con el contenedor redis . Aquí he usado redis: imagen alpina para construir el contenedor.
kasun@Kasuns-MacBook-Air ~ % docker images REPOSITORY TAG IMAGE ID CREATED SIZE redis alpine 9dcd83a87127 3 weeks ago 36.5MB alpine latest 3fb3c9af89a9 7 weeks ago 5.32MB kasun@Kasuns-MacBook-Air ~ %Ejecuté un contenedor de esta manera y limité el puerto 3307 de la máquina local
kasun@Kasuns-MacBook-Air ~ % docker run -dt --name redis_cache -p3307:6379 9dcd83a87127 8f44169e8c73938845319463c83f63048c5051bcbbfca7809a1300446b415ae3 kasun@Kasuns-MacBook-Air ~ %Muestra el contenedor funcionando así.
kasun@Kasuns-MacBook-Air ~ % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8f44169e8c73 9dcd83a87127 "docker-entrypoint.s…" 56 seconds ago Up 55 seconds 0.0.0.0:3307->6379/tcp redis_cache kasun@Kasuns-MacBook-Air ~ %código expressJs (archivo server.js)
const express = require('express'); const app = express(); const redis = require('redis'); const redisClient = redis.createClient(3307, '0.0.0.0'); redisClient.on('connect', () => { console.log("Redis connected"); }) redisClient.on('error', () => { console.log("Error"); }) app.listen(8080, () => { console.log('listening on port 8080'); })Pero cuando inicio la aplicación Express, no se conecta con el contenedor de Redis.
kasun@Kasuns-MacBook-Air test % npm run test > test@1.0.0 test > nodemon server.js [nodemon] 2.0.16 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node server.js` listening on port 8080¿Como puedó resolver esté problema?
este código se trabajó conmigo, puedes probar esto
const express = require('express'); const app = express(); const redis = require('redis'); const redisClient = redis.createClient({ url: 'redis://127.0.0.1:3307' }); const redisConnect = async () => { try { await redisClient.connect() console.log('Redis Connected'); } catch (error) { console.log(error) } } redisConnect() app.listen(8080, () => { console.log('listening on port 8080'); })Cambie 0.0.0.0 a localhost o 127.0.0.1
prueba de esta manera
const redisClient = redis.createClient(3307, 'localhost');