当无法在Docker Compose中连接Express和Redis时
遇到的错误
只要不使用Docker Compose,就可以完成这个任务,但是一旦使用了,就会出现以下错误。
Error: connect ECONNREFUSED 127.0.0.1:6379
太长,没看。
docker-compose.yml和app.js将会是这样的。
version: '3'
services:
express:
build: .
volumes:
- .:/app
tty: true
ports:
- 3000:3000
environment:
- NODE_ENV=development
- PORT=3000
- SESSION_SECRET=hogehoge
- REDIS_HOST=redis_db
- REDIS_PORT=6379
depends_on:
- redis_db
redis_db:
image: redis:latest
ports:
- 6379:6379
var session = require('express-session');
var RedisStore = require('connect-redis')(session)
var redis = require('redis')
var redisClient = redis.createClient({
url: `redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT}`
})
app.use(session({
secret: process.env.SESSION_SECRET,
store: new RedisStore({
client: redisClient,
prefix: 'sid:',
}),
}))
糟糕的例子
我在谷歌上搜索到的信息说,这只能在本地主机上运行。
var session = require('express-session');
var RedisStore = require('connect-redis')(session)
var redis = require('redis')
var redisClient = redis.createClient()
app.use(session({
secret: process.env.SESSION_SECRET,
store: new RedisStore({
client: redisClient,
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
prefix: 'sid:',
}),
}))