mel*_*r55 5 python amazon-web-services python-3.x amazon-elastic-beanstalk ebextensions
我最近使用最新的稳定版 python (3.5) 创建了一个新的 python 程序。遗憾的是,AWS EB 不提供 3.5 基础映像。我一直在尝试配置.ebextensions
以获取图像以升级 python 发行版,因为它是第一个操作。我没有成功。我尝试了以下方法:
套餐
packages:
yum:
postgresql93-devel: []
python35: []
Run Code Online (Sandbox Code Playgroud)
命令
container_commands:
01_install_packages:
command: 'yum install -y python35 python35-pip'
Run Code Online (Sandbox Code Playgroud)
在 的情况下container_commands
,日志确实显示成功安装了 python 35。但是,我们的代码(在后续命令中)然后以一种只有在源代码为 3.4 或更低版本的 python 时才有可能的方式失败。我假设虽然安装了3.5,但环境没有切换到它作为源,继续使用3.4发行版。
我们不能手动修改环境,因为我们需要我们的配置为自动扩展做好准备。因此,解决方案必须来自.ebextensions
. 这里的任何帮助将不胜感激。
更新
我收到一封来自 AWS 支持的电子邮件,通知我,由于操作系统和应用程序 python 环境紧密耦合(即相同),因此无法将应用程序的默认 python 版本更改为 python 3.5。他们建议我创建一个 docker 镜像。我已经开始研究如何做到这一点。如果我想出一个解决方案,我会在这里发布。
我最终解决这个问题的方法是创建一个基于 python 的 docker 容器,并切换到使用弹性 beantalk docker 配置。我包括下面的脚本来帮助人们。请注意,它不包含 uwsgi 或 supervisor,因为它只是第一次通过。您可能希望根据您的情况添加这些内容。
文件
FROM python:3.5
ADD . /src
RUN apt-get update
RUN apt-get install -y postgresql postgresql-contrib libpq-dev python3-dev
RUN pip3 install -r /src/requirements.txt
EXPOSE 8080
RUN python3 --version
CMD ["python3", "/src/application.py", "-p 8080"]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1697 次 |
最近记录: |