암호를 사용하여 Docker에서 connect-redis
문제
나는 redis@v4을 사용합니다.
connect-redis official website은 다음 코드를 제공합니다. 그러나 이 코드는 docker-compose를 사용하는 Docker에서 올바르게 작동하지 않습니다. 이 코드에는 비밀번호 설정이 포함되어 있지 않습니다. 또한 문제 중 하나입니다.
이 컨테이너는 이 코드의 설정에서 localhost
에 연결되는 것 같습니다. 그래서 그것의 원인 일 수 있습니다.
const session = require("express-session")
let RedisStore = require("connect-redis")(session)
// redis@v4
const { createClient } = require("redis")
let redisClient = createClient({ legacyMode: true })
redisClient.connect().catch(console.error)
app.use(
session({
store: new RedisStore({ client: redisClient }),
saveUninitialized: false,
secret: "keyboard cat",
resave: false,
})
)
해결책
redis은 npm 웹사이트에서 이러한 문제를 해결할 수 있는 방법을 제공합니다.
다음 코드를 나타냅니다. 그래서 이 코드에 따라 코드를 만들어 보려고 합니다.
createClient({
url: 'redis://alice:[email protected]:6380'
});
이 URL의 내용은 다음과 같습니다.
redis[s]://[[username][:password]@][host][:port][/db-number]
물론 이것은 URL입니다. "/", "+", "&"및 "?"를 사용하면 안 됩니다.host
는 docker-compose.yml
에 쓰여진 서비스 이름입니다.
다음은 샘플 코드입니다.legacyMode:true
인수에 createClient
를 추가해야 합니다. 이 옵션을 추가하지 않으면 프로세스가 저장 프로세스에서 벗어나지 않습니다.
const RedisStore = require("connect-redis")(session);
// redis@v4
const { createClient } = require("redis")
console.log(env.REDIS_PASS);
// let redisClient = createClient({host: 'redisdb', port: 6379, legacyMode: true, password: env.REDIS_PASS })
let redisClient = createClient({url: `redis://${env.REDIS_USER}:${env.REDIS_PASS}@${env.REDIS_HOST}:${env.REDIS_PORT}`, legacyMode: true})
redisClient.connect().catch(console.error);
이 코드의 각 변수에 대한 설명은 다음과 같습니다.
REDIS_USER=user name(default value is "default")
REDIS_PASS=password
REDIS_HOST=host name (It is written to docker-compose.yml)
REDIS_PORT=port number(default value is 6379)
이 원본 기사는 내가 쓴 다음과 같습니다. 이 기사는 일본어에서 영어로 번역되었습니다.
connect-redis(을)를Docker에서 사용하려면
zenn.dev
Reference
이 문제에 관하여(암호를 사용하여 Docker에서 connect-redis), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/akirakashihara/connect-redis-on-docker-with-password-1ol2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const session = require("express-session")
let RedisStore = require("connect-redis")(session)
// redis@v4
const { createClient } = require("redis")
let redisClient = createClient({ legacyMode: true })
redisClient.connect().catch(console.error)
app.use(
session({
store: new RedisStore({ client: redisClient }),
saveUninitialized: false,
secret: "keyboard cat",
resave: false,
})
)
redis은 npm 웹사이트에서 이러한 문제를 해결할 수 있는 방법을 제공합니다.
다음 코드를 나타냅니다. 그래서 이 코드에 따라 코드를 만들어 보려고 합니다.
createClient({
url: 'redis://alice:[email protected]:6380'
});
이 URL의 내용은 다음과 같습니다.
redis[s]://[[username][:password]@][host][:port][/db-number]
물론 이것은 URL입니다. "/", "+", "&"및 "?"를 사용하면 안 됩니다.
host
는 docker-compose.yml
에 쓰여진 서비스 이름입니다.다음은 샘플 코드입니다.
legacyMode:true
인수에 createClient
를 추가해야 합니다. 이 옵션을 추가하지 않으면 프로세스가 저장 프로세스에서 벗어나지 않습니다.const RedisStore = require("connect-redis")(session);
// redis@v4
const { createClient } = require("redis")
console.log(env.REDIS_PASS);
// let redisClient = createClient({host: 'redisdb', port: 6379, legacyMode: true, password: env.REDIS_PASS })
let redisClient = createClient({url: `redis://${env.REDIS_USER}:${env.REDIS_PASS}@${env.REDIS_HOST}:${env.REDIS_PORT}`, legacyMode: true})
redisClient.connect().catch(console.error);
이 코드의 각 변수에 대한 설명은 다음과 같습니다.
REDIS_USER=user name(default value is "default")
REDIS_PASS=password
REDIS_HOST=host name (It is written to docker-compose.yml)
REDIS_PORT=port number(default value is 6379)
이 원본 기사는 내가 쓴 다음과 같습니다. 이 기사는 일본어에서 영어로 번역되었습니다.
connect-redis(을)를Docker에서 사용하려면
zenn.dev
Reference
이 문제에 관하여(암호를 사용하여 Docker에서 connect-redis), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/akirakashihara/connect-redis-on-docker-with-password-1ol2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)