问题描述
我正在尝试在AWS Elastic Beanstalk中部署该项目(https://github.com/pydanny/cookiecutter-django)的Docker设置。我正在尝试将命令/ start转换为Dockerrun.aws.json,但由于该任务无法在ECS容器内正常运行,因此我不确定这是否是正确的转换。我用自定义的Nginx Dockerfile替换了traefik,当我使用production.yml文件在本地使用docker-compose运行它时,它们可以正常工作(我可以访问Django的管理站点),但是当我开始在Elastic Beanstalk中部署它们时, django任务停止,Nginx正常运行。该项目还配置了白噪声和压缩器。构建后,我还使用AWS ECR上传图像。我怀疑可能是导致问题的/ start命令,但我不确定。如果有人可以帮助我,我将不胜感激。
请参考以下配置文件:
请注意,我删除了一些配置,例如环境变量和postgres服务。环境变量放置在Elastic Beanstalk应用程序中,对于postgres,我正在使用AWS中的RDS数据库。 Django的Dockerfile也未更改,它来自项目的生成的Dockerfile。
production.yml :
version: "3"
services:
django: &django
build:
context: .
dockerfile: ./compose/production/django/Dockerfile
image: <id>.dkr.ecr.ap-southeast-1.amazonaws.com/django-docker
command: /start
Nginx:
build: ./compose/production/Nginx/
image: <id>.dkr.ecr.ap-southeast-1.amazonaws.com/django-docker-Nginx
depends_on:
- django
ports:
- 80:80
开始文件:
#!/bin/bash
set -o errexit
set -o pipefail
set -o nounset
python /app/manage.py collectstatic --noinput
compress_enabled() {
python << END
import sys
from environ import Env
env = Env(COMPRESS_ENABLED=(bool,True))
if env('COMPRESS_ENABLED'):
sys.exit(0)
else:
sys.exit(1)
END
}
if compress_enabled; then
# NOTE this command will fail if django-compressor is disabled
python /app/manage.py compress
fi
/usr/local/bin/gunicorn config.wsgi --bind 0.0.0.0:5000 --chdir=/app
Nginx配置:
proxy_cache_path /var/cache/Nginx levels=1:2 keys_zone=STATIC:10m inactive=7d use_temp_path=off;
upstream django {
server django:5000;
}
server {
listen 80 default_server;
server_name _;
server_tokens off;
gzip on;
gzip_proxied any;
gzip_comp_level 4;
gzip_types text/css application/javascript image/svg+xml;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
location /static {
proxy_cache STATIC;
proxy_ignore_headers Cache-Control;
proxy_cache_valid 60m;
proxy_pass http://django;
}
location / {
proxy_pass http://django;
}
}
Dockerrun.aws.json :
{
"AWSEBDockerrunVersion": 2,"containerDeFinitions": [
{
"command": [
"/start"
],"image": "<id>.dkr.ecr.ap-southeast-1.amazonaws.com/django-docker","name": "django","hostname": "django","memory": 256,"essential": false
},{
"image": "<id>.dkr.ecr.ap-southeast-1.amazonaws.com/django-docker-Nginx","name": "Nginx","dependsOn": [
{
"condition": "START","containerName": "django"
}
],"portMappings": [
{
"containerPort": 80,"hostPort": 80
}
],"essential": true,"links": [
"django"
],"memory": 128
}
]
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)