I had deployed a simple redis based nodejs application on the digital ocean cloud.
Here is the node.js app.
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('hello world');
});
app.set('trust proxy', 'loopback')
app.listen(3000);
var redisClient = require('redis').createClient(6379,'localhost');
redisClient.on('connect',function(err){
console.log('connect');
})
In order to deploy the application, I used one node.js container and one redis container respectively,and linked node.js container with redis container.
The redis container could be obtained by
docker run -d --name redis -p 6379:6379 dockerfile/redis
and the node.js container is based on google/nodejs, in which Dockerfile is simply as
FROM google/nodejs
WORKDIR /src
EXPOSE 3000
CMD ["/bin/bash"]
my node.js image is named as nodejs and built by
docker build -t nodejs Dockerfile_path
and the container is run by copying my host applications files to the src folder in the container and linking the existing redis container
docker run -it --rm -p 8080:3000 --name app -v node_project_path:/src --link redis:redis nodejs
finally I got into the container successfully, then installed the npm modules by npm install
and then start the application by node app.js
.
But I got a error saying:
Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED
As redis container is exposed to 6379, and my nodejs container is linking to redis container. in my node.js app, connecting to localhost redis server with port 6379 is supposed to be ok, why in fact it is not working at all