Conversation
|
Normalement, tu peux aussi utiliser la syntaxe: |
|
Pour information, j‘avais eu justement un besoin similaire pour
configurer redis pour l‘environnement de développement pour les containers:
https://github.com/linuxfrorg/linuxfr.org/blob/0f970f466c01307e145a9c5d362b50539851cfa4/deployment/default.env#L5-L9
```env
# Redis service is used as a caching service and a publish/subscribe service
# to allow the different LinuxFr tools work together
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_URL=redis://redis:6379/0
```
C‘est ensuite utilisé dans la ligne de commande pour démarrer le service
`img-Linuxfr.org`:
https://github.com/linuxfrorg/linuxfr.org/blob/0f970f466c01307e145a9c5d362b50539851cfa4/deployment/linuxfr-img/Dockerfile#L51
```dockerfile
CMD ["sh", "-c", "exec ./img-LinuxFr.org -a 0.0.0.0:8000 -r
\"${REDIS_URL##redis://}\""]
```
C‘est aussi utilisé pour `board`, il faut lui partager les 2 variables
d'environnement (`REDIS_HOST` et `REDIS_PORT`):
https://github.com/linuxfrorg/board-sse-linuxfr.org/blob/43959c1712c87baa8baba34a48466099ac6ca13b/lib/board-sse-linuxfr.org/redis_plugin.rb#L15
```ruby
@redis = Redis.new(host: ENV['REDIS_HOST'] || "localhost", port:
ENV['REDIS_PORT'] || 6379)
```
Dans cette PR, on pourrait peut être ajouter une note sur les service
`img-LinuxFr.org` et `board` qui doivent être connectés au même service
Redis pour qu'ils interagissent correctement avec LinuxFr.
Enfin, dans la branche pour Rails 8, nous avons le fichier
`config/cable.yml` qui utilise aussi cette variable, mais je ne sais pas
à quoi ça correspond:
https://github.com/linuxfrorg/linuxfr.org/blob/07d30220aa598ac2bd2f242d816bf1b7b1d0c32e/config/cable.yml#L9
```yml
url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
```
|
|
Ce qui semble utilisé comme convention par d'autres : https://www.rubydoc.info/gems/redis/5.4.1 ou bien Dans notre cas on a besoin de:
par contre le |
irb(main):001:0> require "redis"
=> true
irb(main):005:0> redis = Redis.new(url: "redis://x.x.x.x:6379/1/sdflshgdjkghuieuihjkghjkhgdjkhgd")
=> #<Redis client v4.0.2 for redis://x.x.x.x:6379/1>
irb(main):006:0> redis.get("mykey")
=> nil
irb(main):007:0> redis.set("mykey", "toto")
=> "OK"
irb(main):008:0> redis.get("mykey")
=> "toto"a priori le /cache est juste là pour faire joli |
|
Cf 649f5a0 qui précise que c'est le 'namespace' https://github.com/nono/redis-store - config.cache_store = :redis_store, "redis://linuxfr.org:6379/0"
+ config.cache_store = :redis_store, "redis://linuxfr.org:6379/0/cache"Et j'avais raté ça dans la doc https://api.rubyonrails.org/v8.1.2/classes/ActiveSupport/Cache/RedisCacheStore.html
|
|
(conseil de lecture: mettre la musique de Retour vers le futur) nono-redis-store avait une notion de namespace. redis-store 1.0 avait une notion de namespace cf redis-store/redis-store@7b24cb1 puis f602114 "Use the new redis cache store from Rails 5.2" ce qui nous ramène à
bref c'est un namespace pour ActiveSupport https://api.rubyonrails.org/v8.1.2/classes/ActiveSupport/Cache/RedisCacheStore.html , pas pour Redis lui-même. Et a priori faut le garder. |
Actuellement redis est dans un conteneur différent de la partie RoR (sur le même hôte). Il y a donc besoin de surcharger la configuration pour ce redis qui n'est pas sur 127.0.0.1 / localhost. Par contre on ne fait rien niveau authentification ou support TLS, donc à réserver à un réseau local...
Les REDIS_HOST/PORT/URL semblent être des variables standards. Le REDIS_CACHE_URL est spécifique à la configuration de notre CMS.