【问题标题】:AWS Elastic Beanstalk container_commands in Python 3.4 Docker ContainerPython 3.4 Docker 容器中的 AWS Elastic Beanstalk container_commands
【发布时间】:2015-03-13 05:33:45
【问题描述】:

我有一个在 Python 3.4 上运行的 Django 1.6 应用程序,我想在 AWS Elastic Beanstalk 上部署它,所以我选择了“预配置 - Docker/Python”(即 Python 3.4)作为我的配置,但部署失败在container_command 上运行django-admin.py。相同的占位符应用程序包在“预配置/Python”配置(即 Python 2.7)上按预期运行,没有错误。

根据documentation .ebextension config container_commands 在设置应用程序和Web 服务器并提取应用程序版本文件之后,但在部署应用程序之前运行。这似乎是 Python 2.7 容器的情况,但不是 Python 3.4 Docker 容器。

为了测试理论,我在我的包中添加了一个脚本来查看环境并将其作为container_command 执行。 Python 2.7 容器使用 Python 2.7,从requirements.txt 安装了 pip 包,并按预期找到了django-admin.py。然而,Python 3.4 Docker 容器在 container_command 阶段使用 Python 2.6,因此没有设置环境来查找 django-admin.py 或安装的 pip 包。

如何让 Preconfigured - Docker/Python (3.4) 容器在预期环境中执行 container_commands?在触发 container_commands 之前是否缺少激活容器和/或其 virtualenv 的步骤?

【问题讨论】:

    标签: python django amazon-web-services docker amazon-elastic-beanstalk


    【解决方案1】:

    AWS Support 让我添加一个自定义 Dockerfile。我使用了我的 Dockerfile 的 ENTRYPOINT 来覆盖基础镜像中的默认值,这样我就可以插入我自己的脚本来触发 syncdb 命令。

    参考:https://forums.aws.amazon.com/message.jspa?messageID=595630

    【讨论】:

    • 这不是不可取的吗,因为它会导致池中的每台机器都运行启动脚本,而您可能只想成为leader_only
    猜你喜欢
    • 2017-07-26
    • 2020-07-23
    • 2018-12-12
    • 2015-05-01
    • 2021-11-25
    • 2014-12-22
    • 2020-05-03
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多