can't connect mayan-edms to database in docker-compose.yml

不想你离开。 提交于 2020-04-18 05:49:06

问题


I am trying to install the Mayan-EDMS image with the Django app and Postgres database using docker-compose but each time, I try to build docker-compose using docker-compose up it gives an error.

mayanedms | Waiting for db:5432

here is my docker-compose.yml docker-compose contain postgres:11.4-alpine,redis:5.0-alpine, mayanedms/mayanedms:3 and django app

version: "3"

networks:
  bridge:
    driver: bridge

services:
  app:
    container_name: django
    restart: always
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    environment:
      - DB_NAME=app
      - DB_USER=insights
      - DB_HOST=db
      - DB_PORT=5432
    depends_on:
      - db
    command: >
      sh -c "mkdir -p logs media &&
             python manage.py wait_for_db &&
             python manage.py runserver 0.0.0.0:8000"

  db:
    image: postgres:11.4-alpine
    container_name: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=insights
      - POSTGRES_DB=app

  redis:
    command:
        - redis-server
        - --appendonly
        - "no"
        - --databases
        - "2"
        - --maxmemory
        - "100mb"
        - --maxclients
        - "500"
        - --maxmemory-policy
        - "allkeys-lru"
        - --save
        - ""
        - --tcp-backlog
        - "256"
        - --requirepass
        - "${MAYAN_REDIS_PASSWORD:-mayanredispassword}"
    image: redis:5.0-alpine
    networks:
        - bridge
    restart: unless-stopped
    volumes:
        - redis_data:/data




  mayanedms:
    image:  mayanedms/mayanedms:3
    container_name: mayanedms
    restart: unless-stopped
    ports:
      - "80:8000"
    depends_on:
      - db
      - redis
    volumes:
      - mayanedms_data:/var/lib/mayan
    environment: &mayan_env
      MAYAN_CELERY_BROKER_URL: redis://:${MAYAN_REDIS_PASSWORD:-mayanredispassword}@redis:6379/0
      MAYAN_CELERY_RESULT_BACKEND: redis://:${MAYAN_REDIS_PASSWORD:-mayanredispassword}@redis:6379/1
      MAYAN_DATABASES: "{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'${MAYAN_DATABASE_DB:-app}','USER':'${MAYAN_DATABASE_USER:-insights}','HOST':'postgresql'}}"
      MAYAN_DOCKER_WAIT: "db:5432 redis:6379"
    networks:
      - bridge

  background_tasks:
    restart: always
    container_name: process_tasks
    build:
      context: .
    depends_on:
      - app
      - db
    environment:
      - DB_NAME=app
      - DB_USER=insights
      - DB_HOST=db
      - DB_PORT=5432
    volumes:
      - ./app:/app
    command: >
      sh -c "python manage.py process_tasks --sleep=3 --log-std --traceback"

volumes:
    postgres_data:
    redis_data:
    mayanedms_data:

回答1:


these is no network tag in database it should be solved like this

db:
    image: postgres:11.4-alpine
    container_name: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=insights
      - POSTGRES_DB=app
    networks:
      - bridge

so full docker file will be

version: "3"

networks:
  bridge:
    driver: bridge

services:
  app:
    container_name: django
    restart: always
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    environment:
      - DB_NAME=app
      - DB_USER=insights
      - DB_HOST=db
      - DB_PORT=5432
    depends_on:
      - db
    networks:
      - bridge
    command: >
      sh -c "mkdir -p logs media &&
             python manage.py wait_for_db &&
             python manage.py runserver 0.0.0.0:8000"

  db:
    image: postgres:11.4-alpine
    container_name: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=insights
      - POSTGRES_DB=app
    networks:
      - bridge

  redis:
    command:
        - redis-server
        - --appendonly
        - "no"
        - --databases
        - "2"
        - --maxmemory
        - "100mb"
        - --maxclients
        - "500"
        - --maxmemory-policy
        - "allkeys-lru"
        - --save
        - ""
        - --tcp-backlog
        - "256"
        - --requirepass
        - "${MAYAN_REDIS_PASSWORD:-mayanredispassword}"
    image: redis:5.0-alpine
    networks:
        - bridge
    restart: always
    volumes:
        - redis_data:/data




  mayanedms:
    image:  mayanedms/mayanedms:3
    container_name: mayanedms
    restart: always
    ports:
      - "80:8000"
    depends_on:
      - db
      - redis
    volumes:
      - mayanedms_data:/var/lib/mayan
    environment: &mayan_env
      MAYAN_CELERY_BROKER_URL: redis://:${MAYAN_REDIS_PASSWORD:-mayanredispassword}@redis:6379/0
      MAYAN_CELERY_RESULT_BACKEND: redis://:${MAYAN_REDIS_PASSWORD:-mayanredispassword}@redis:6379/1
      MAYAN_DATABASES: "{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'app','USER':'insights','HOST':'db'}}"
      MAYAN_DOCKER_WAIT: "db:5432 redis:6379"
    networks:
      - bridge

  background_tasks:
    restart: always
    container_name: process_tasks
    build:
      context: .
    depends_on:
      - app
      - db
    environment:
      - DB_NAME=app
      - DB_USER=insights
      - DB_HOST=db
      - DB_PORT=5432
    volumes:
      - ./app:/app
    networks:
      - bridge
    command: >
      sh -c "python manage.py process_tasks --sleep=3 --log-std --traceback"

volumes:
    postgres_data:
    redis_data:
    mayanedms_data:


来源:https://stackoverflow.com/questions/61015228/cant-connect-mayan-edms-to-database-in-docker-compose-yml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!