0

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 Answers2

0

Try using networks keyword instead of links.

https://docs.docker.com/compose/compose-file/#links

PersonPr7
  • 136
  • 7
0

fix for me was adjusting working dir in docker-compose

    working_dir: /the_name_of_your_django_project/
liam
  • 223
  • 2
  • 10