127.0.0.1
in Docker significa quasi sempre "questo contenitore". Se stai eseguendo la tua applicazione in Docker Compose, è
... configura un'unica rete per la tua app. Ogni contenitore per un servizio si unisce alla rete predefinita ed è entrambi raggiungibile da altri contenitori su quella rete e rilevabile da loro in un nome host identico al nome del contenitore.
Cioè, nel contesto di questo docker-compose.yml
file, ci sono nomi host redis
e web
quel punto ai due contenitori.
Hai già fatto una delle cose importanti di configurazione. Quando il tuo codice dice
REDIS_HOST = os.environ.get('REDIS_HOST', '127.0.0.1')
è possibile impostare una variabile di ambiente che sostituisca il valore predefinito integrato. Quindi qui devi solo aggiungere un'impostazione di variabile d'ambiente al tuo docker-compose.yml
file:
version: '3'
services:
redis:
image: "redis:alpine"
web:
build: . # current directory
environment:
- REDIS_HOST=redis
ports:
- "8000:8000"
# application source code and default command are built into the image