我有一个Django 1.6
应用程序在Python 3.4上运行,我想在AWS Elastic Beanstalk
上部署,所以我选择了“预配置 - Docker / Python”(即Python 3.4)作为我的配置但部署失败,container_command
运行django-admin.py
。相同的占位符应用程序包在“预配置/ Python”配置(即Python 2.7)上按预期运行,没有错误。
根据documentation .ebextension
配置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包。
如何让预配置的Docker / Python(3.4)容器在预期的环境中执行container_commands
?在触发container_commands
之前,是否缺少激活容器和/或它的virtualenv的步骤?
答案 0 :(得分:1)
AWS Support指出我要添加自定义Dockerfile。我使用Dockerfile的ENTRYPOINT覆盖了基本映像的默认值,因此我可以使用自己的脚本来触发syncdb命令。
参考:https://forums.aws.amazon.com/message.jspa?messageID=595630