使用预configuration的Docker容器进行Elastic Beanstalk Django部署

我正在尝试将一个Django应用程序部署到弹性beanstalk。 我正在部署使用亚马逊的预configurationPython 3.4泊坞窗容器和新的Awsebcli v3命令行工具。 当我运行eb deploy我收到消息ERROR: Timed out while waiting for command to Complete ,但是当我运行eb logs时,我看不到任何遇到错误的迹象。 当我导航到为环境提供的CNAME时,它只是说Internal Server Error

在Amazon提供的使用docker预configuration的python容器部署到EB的示例中,他们使用了一个容器应用程序,并使用名为application.py的文件运行应用application.py …我没有这样一个application.py文件,我想这可能是造成这个问题。 我会在application.py文件中运行我的django应用程序,以及应用程序所需的任何命令(collectstatic,syncdb,如果数据库需要同步,其他makemigrations和迁移等)

我使用Django 1.7和Python 3.4

谢谢

你有容器在本地成功运行吗? 如果不是,那么在尝试部署到Elastic Beanstalk之前,我会这样做。 我也处于这个过程的中间,而不是觉得特别简单! 然而,我已经超越了你提到的问题。

我的application.py文件如下所示:

 import os import sys sys.path.insert(0, '/var/app') os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings' from django.core.wsgi import get_wsgi_application application = get_wsgi_application() 

那我在哪里:

 /var/app | | project/ settings.py | myapp/ views/ templates/ ... 

这就给我留下了一个正在工作的应用程序,但是除非我以开发模式运行,否则不能提供我的静态文件。 我认为这意味着容器化的Apache(或者它是Nginx)实例不在我的/ var / app / static目录中,但是我还没有想到。

至于collectstaticsyncdb – 到目前为止,我只是手动运行这些。 我在想,它们可以作为CMD条目添加到Dockerfile中,但是Docker只会执行这些条目中的最后一个 ,所以它不起作用。

另一个问题是,是否可以在Beanstalk上运行两个容器(我的Postgres在一个,Django在另一个)。 我不确定eb deploy可以应付这个问题。