Python 3.4 Docker 容器中的 AWS Elastic Beanstalk container_commands
Posted
技术标签:
【中文标题】Python 3.4 Docker 容器中的 AWS Elastic Beanstalk container_commands【英文标题】:AWS Elastic Beanstalk container_commands in Python 3.4 Docker Container 【发布时间】: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 的步骤?
【问题讨论】:
【参考方案1】:AWS Support 让我添加一个自定义 Dockerfile。我使用了我的 Dockerfile 的 ENTRYPOINT 来覆盖基础镜像中的默认值,这样我就可以插入我自己的脚本来触发 syncdb 命令。
参考:https://forums.aws.amazon.com/message.jspa?messageID=595630
【讨论】:
这不是不可取的吗,因为它会导致池中的每台机器都运行启动脚本,而您可能只想成为leader_only
?以上是关于Python 3.4 Docker 容器中的 AWS Elastic Beanstalk container_commands的主要内容,如果未能解决你的问题,请参考以下文章
使用 dbus 关闭 docker 容器和 python 中的树莓派
由于出现此错误,无法运行 docker 容器:无法访问 jarfile app.jar
将参数传递给 Docker 容器中的 Python argparse