如何解决带有 AWS ECS 错误的 Django 和 Nginx Docker 容器
我目前正在使用 Terraform 和 AWS ECS 构建一个项目,其中包含两个容器:Django App 和 Nginx(用于托管静态文件)。目前效果很好;但是,我在 Nginx 的日志中收到一个错误(使用 CloudWatch Logs)说,
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
我知道这与 Django 的 ALLOWED_HOSTS 有关,因为我的 DEBUG
在 False
文件中设置为 settings.py
,但我觉得一切都应该正常工作。这是我的 settings.py
为 ALLOWED_HOSTS 准备的:
ALLOWED_HOSTS = os.getenv('ALLOWED_HOSTS','').split()
从这里开始,我的任务定义文件名为 container-def.json
以在 AWS ECS 中完成工作:
[
{
"name": "django-app","image": "${django_docker_image}","cpu": 10,"memory": 256,"memoryReservation": 128,"links": [],"essential": true,"portMappings": [
{
"hostPort": 0,"containerPort": 8000,"protocol": "tcp"
}
],"command": ["gunicorn","-w","3","-b",":8000","project.wsgi:application"],"environment": [
{
"name": "RDS_DB_NAME","value": "${rds_db_name}"
},{
"name": "RDS_USERNAME","value": "${rds_username}"
},{
"name": "RDS_PASSWORD","value": "${rds_password}"
},{
"name": "RDS_PORT","value": "5432"
},{
"name": "ALLOWED_HOSTS","value": "${allowed_hosts}"
}
],"mountPoints": [
{
"containerPath": "/usr/src/app/staticfiles","sourceVolume": "static_volume"
}
],"logConfiguration": {
"logDriver": "awslogs","options": {
"awslogs-group" : "/ecs/frontend-container","awslogs-region": "us-east-1"
}
}
},{
"name": "nginx","image": "${ngnix_docker_image}","memory": 128,"links": ["django-app"],"containerPort": 80,"options": {
"awslogs-group": "/ecs/nginx","awslogs-region": "us-east-1"
}
}
}
]
我的 var.tf
文件是这样的:
####### Input URL of ALLOWED_HOSTS in Django's settings ############
variable "allowed_hosts" {
description = "Domain name for allowed hosts"
default = ".example.org"
}
最后,我在 Terraform 的数据模板中调用所有这些变量:
### Here lies the container-definition.json file to input what each container's parameters
### must have.
data "template_file" "ecs-containers" {
template = file("container-definitions/container-def.json")
vars = {
django_docker_image = var.django_docker_image
ngnix_docker_image = var.ngnix_docker_image
rds_db_name = var.rds_db_name
rds_username = var.rds_username
rds_password = var.rds_password
allowed_hosts = var.allowed_hosts
}
}
如果您对此有任何反馈,我将不胜感激。我知道我几乎可以解决这个问题。谢谢大家。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。