首页 文章

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

提问于
浏览
2

我正在尝试将django应用程序部署到弹性beanstalk . 我正在使用amazon的预配置Python 3.4 docker容器和新的Awsebcli v3命令行工具进行部署 . 当我运行 eb deploy 时,我收到消息 ERROR: Timed out while waiting for command to Complete ,但是当我运行 eb logs 时,我看不到任何错误迹象 . 当我导航到为环境提供的CNAME时,它只是说 Internal Server Error

在Amazon使用docker预配置的python容器部署到EB的示例中,他们使用了一个烧瓶应用程序并使用名为 application.py 的文件运行应用程序...我没有这样的application.py文件,我认为这可能导致问题 . 我将在application.py文件中放置什么来运行我的django应用程序,以及应用程序所需的任何命令(如果数据库需要同步,则为collectstatic,syncdb,否则makemigrations和migrate等)

我正在使用Django 1.7和Python 3.4

谢谢

1 回答

  • 2

    您的容器是否在本地成功运行?如果没有,我会在您尝试部署到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 will only execute the last of those entries,所以它不起作用 .

    我的另一个问题是它是否's going to be possible to run two containers on Beanstalk (I have Postgres in one, Django in another). I'我不确定 eb deploy 是否可以应付这个问题 .

相关问题