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中的变量

将参数传递给 Docker 容器中的 Python argparse

如何从 docker 容器中的 python 脚本连接到 localhost 上的 mysql 数据库

如何从 Docker 容器中的 python 脚本连接到 Ubuntu 上的本地 SQL 服务器