AWS ElasticBeanstalk не удалось развернуть приложение Django/Postgres

У меня возникают трудности с развертыванием моего приложения, созданного с помощью Django, Postgres, DjangoQ, Redis и ES на AWS Elastic Beanstalk, используя docker-compose.yml.

Я использовал EB CLI (eb init, eb create) для этого, и он показывает, что среда успешно запущена, но у меня все еще есть следующая проблема.

  1. На экземпляре EC2 нет контейнеров postgres, djangoq и ec, как указано ниже в файле docker-compose. Только контейнеры django, redis и ngnix находятся на экземпляре ec2.

  2. Переменные окружения, которые я указал в файле docker-compose.yml, не настраиваются на контейнер django на EC2, поэтому я не могу запустить там django.

Я совсем запутался и не уверен, с чего начать, чтобы решить проблемы... Любое понимание будет очень признательно...

version: '3'
services:
  django:
    build:
      context: .
      dockerfile: docker/Dockerfile
    command: gunicorn --bind 0.0.0.0:5000 etherscan_project.wsgi:application
    env_file: .env
    volumes:
      - $PWD:/srv/app/:delegated
    depends_on:
      - redis
      - db
      - es

  django-q:
    build:
      context: .
      dockerfile: docker/Dockerfile
    command: >
      sh -c "python manage.py makemigrations && 
             python manage.py migrate &&
             python manage.py qcluster"
    env_file: .env
    volumes:
      - $PWD:/srv/app/:delegated
    depends_on:
      - redis
      - db
      - django
      - es

  db:
    image: postgres:latest
    expose:
      - 5432
    env_file: .env
    volumes:
      - ./docker/volumes/postgres:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $POSTGRES_DB"]
      interval: 10s
      timeout: 5s
      retries: 5

  redis:
    image: redis:latest
    expose: 
      - 6379
    ports: 
      - 6379:6379
    volumes: 
      - ./docker/volumes/redis:/data
    
  nginx:
    container_name: nginx
    image: nginx:1.13
    ports:
      - 80:80
    depends_on:
      - db
      - django
      - redis
    volumes:
      - ./docker/nginx:/etc/nginx/conf.d
      - $PWD:/srv/app/:delegated
    
  es:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.13.4
    ports: 
      - 9200:9200
      - 9300:9300
    expose:
      - 9200
      - 9300
    environment: 
      - discovery.type=single-node 
      - xpack.security.enabled=false
    ulimits: 
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./docker/volumes/es:/usr/share/elasticsearch/data 

volumes:
  app-files:
    driver_opts:
      type: nfs
      device: $PWD
      o: bind

можете ли вы подтвердить, что переменные окружения используются правильно? Распространенная ошибка с EB и docker-compsoe заключается в том, что предполагается, что ваш .env файл работает так же, как в EB, а не так, как в docker-compose. Я уже допускал эту ошибку. Посмотрите документацию https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.container.console.html#docker-env-cfg.env-variables

Вернуться на верх