AWS ElasticBeanstalk не удалось развернуть приложение Django/Postgres
У меня возникают трудности с развертыванием моего приложения, созданного с помощью Django, Postgres, DjangoQ, Redis и ES на AWS Elastic Beanstalk, используя docker-compose.yml.
Я использовал EB CLI (eb init, eb create) для этого, и он показывает, что среда успешно запущена, но у меня все еще есть следующая проблема.
На экземпляре EC2 нет контейнеров postgres, djangoq и ec, как указано ниже в файле docker-compose. Только контейнеры django, redis и ngnix находятся на экземпляре ec2.
Переменные окружения, которые я указал в файле 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