Comment se connecter à un Redis conteneur à l'aide de Docker Composer?
Ce docker-compose.yml
semble fonctionner OK:
version: '3'
services:
web:
image: web-app
command: bundle exec rackup
ports:
- "9292:9292"
links:
- redis
redis:
image: redis
Commande:
docker build -t web-app .; docker-compose up
L'Application Web s'attend à une REDIS_URL config. Web App Dockerfile:
ENV REDIS_URL redis:6379
Il semble que l'Application Web ne peut pas se connecter à le Redis:
Redis::CannotConnectError - Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED):
Alors, qu'est-ce que le Redis URL de l'Application Web?
Ai-je besoin d'exposer le Redis port (6379)?
EDIT:
Grâce à @Andy Shinn, je vois le redis url doit être redis://6379
.
Maintenant, je reçois Errno::EINVAL - Invalid argument - connect(2) for 0.0.24.235:6379
. Cela peut avoir à faire avec le Redis v 3.2.8. Je vais essayer une autre version et voir si cela fonctionne.
EDIT #2:
3.2.8 fonctionne très bien avec l'app sur ma machine locale, de sorte que n'est pas la question.
web
après un peu -> de cette façon, vous savez que redis
a été commencé.Cette message d'erreur indique que le
web
service tente de se connecter à redis à l'adresse IP locale (127.0.0.1) et non pas la REDIS_URL
qui devrait être le redis
nom DNS à partir du lien. Ce type d'application est cela? Il est conçu pour utiliser le REDIS_URL
? Il serait utile de publier un peu plus à propos de l'application (Dockerfile
, comment il utilise le REDIS_URL
, etc).Oui, il est configuré pour utiliser le
REDIS_URL
. C'est un Sinatra app. D'autres configs de travail, et la production a un REDIS_URL
.Ne semble pas être un problème de synchronisation. Redis commence avant l'application web.
Est
0.0.24.235
la propriété intellectuelle qu'elle tente d'atteindre, maintenant, ou un copier/coller de l'erreur?OriginalL'auteur B Seven | 2017-02-21
Vous devez vous connecter pour publier un commentaire.
Le problème est que
redis
est "variable" qui seront interpolées dans le Dockerfile.Mais le Redis URL doit commencer par le littérale
redis
.Donc, la solution est la mise à jour du menu fixe composer:
Souhaité config est:
Grâce à BMitch et Andy Shinn pour m'aider à comprendre cela.
mongodb://
.avez-vous une idée de comment REDIS_URL ressemble si j'ai mis un mot de passe?
redis://user:secret@localhost:6379/0?foo=bar&qux=baz
OriginalL'auteur B Seven