Я развернул простое приложение nodejs на основе redis в цифровом облаке океана.не удалось связать контейнер redis с контейнером node.js в докере
Приложение node.js.
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');
})
Для того, чтобы развернуть приложение, я использовал один контейнер Node.js и один контейнер REDIS соответственно, и связан с Node.js контейнера REDIS контейнера.
Контейнер Redis может быть получен
docker run -d --name redis -p 6379:6379 dockerfile/redis
и Node.js контейнер на основе Google/nodejs, в котором Dockerfile является просто как
FROM google/nodejs
WORKDIR /src
EXPOSE 3000
CMD ["/bin/bash"]
мой Node.js изображение названный как nodejs и построенный по
docker build -t nodejs Dockerfile_path
и контейнер запускается путем копирования моего приложения-хозяина катионы файлы в папку Src в контейнере и связывающего существующего REDIS контейнер
docker run -it --rm -p 8080:3000 --name app -v node_project_path:/src --link redis:redis nodejs
наконец я попал в контейнер успешно, затем устанавливаются модули НОГО npm install
, а затем запустить приложение на node app.js
.
Но я получил сообщение об ошибке сказав:
Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED
Как Redis контейнер подвергается 6379, и мой nodejs контейнер ссылок на Redis контейнер. в моем приложении node.js, подключение к серверу localhost redis с портом 6379 должно быть в порядке, поэтому на самом деле оно вообще не работает
Не могли бы вы объяснить, почему докер в этом случае не создает переменные среды, такие как 'process.env.REDIS_PORT_6379_TCP_ADDR'? – pietrovismara