I have a local & production docker-compose services for my django app, in the local service all be right, but in the production service daphne not work, in the same the redis connection is equals and i’m not using a special network conf for my docker compose services.
local compose:
version: "3"
services:
app:
image: app
build:
context: .
dockerfile: ./compose/local/Dockerfile
environment:
- DJANGO_SETTINGS_MODULE=psvt.settings.local
volumes:
- ".:/django/"
ports:
- "8000:8000"
depends_on:
- redis
- db
links:
- redis:redis
- db:postgres
redis:
image: redis
restart: always
expose:
- '6379'
daphne:
restart: always
image: "app:latest"
working_dir: /django/
command: bash -c "daphne -b 0.0.0.0 -p 8001 psvt.asgi:channel_layer"
ports:
- "8001:8001"
environment:
- REDIS_HOST=redis
- DJANGO_SETTINGS_MODULE=psvt.settings.local
depends_on:
- redis
links:
- redis
db:
image: postgres:10.1-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
expose:
- "5432"
volumes:
postgres_data:
production: (here daphne is not working)
version: "3"
services:
app:
image: app_production
build:
context: .
dockerfile: ./compose/production/Dockerfile
#command: bash -c "gunicorn psvt.wsgi:application --bind 0.0.0.0:8000"
command: bash -c "./manage.py runserver"
working_dir: /django/
environment:
- DJANGO_SETTINGS_MODULE=psvt.settings.production
volumes:
- ".:/django/"
- static_files:/static/
- media_files:/media/
ports:
- "8000:8000"
depends_on:
- redis
- db
links:
- redis:redis
- db:postgres
daphne:
restart: always
image: "app_production:latest"
working_dir: /django/
command: bash -c "daphne -b 0.0.0.0 -p 8001 psvt.asgi:channel_layer"
ports:
- "8001:8001"
environment:
- REDIS_HOST=redis
- DJANGO_SETTINGS_MODULE=psvt.settings.production
depends_on:
- redis
links:
- redis
redis:
image: redis
restart: always
expose:
- '6379'
db:
image: postgres:10.1-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
expose:
- "5432"
nginx:
build:
context: ./compose/nginx/
dockerfile: ./Dockerfile
ports:
- 100:80
- 5000:80
links:
- app:app
volumes:
- static_files:/static/
- media_files:/media/
depends_on:
- app
volumes:
postgres_data:
static_files:
media_files:
The error is:
Error trying to receive messages: Error -2 connecting to redis:6379. Name or service not known.
2
Answers
Try using
networks
keyword instead oflinks
.https://docs.docker.com/compose/compose-file/#links
fix for me was adjusting working dir in docker-compose