弹性beanstalk需要python 3.5

我最近使用
python(3.5)的最新稳定版本创建了一个新的python程序.遗憾的是,AWS EB不提供3.5基本映像.我一直在尝试配置.ebextensions以使图像升级python发行版,因为它是第一个动作.我没有成功.我尝试过以下方法:

packages:
    yum:
        postgresql93-devel: []
        python35: []

命令

container_commands:
      01_install_packages:
        command: 'yum install -y python35 python35-pip' 

在container_commands的情况下,日志确实显示成功安装python 35.但是,我们的代码(在后续命令中)然后以只有在获得python版本3.4或更低版本时才可能的方式失败.我假设虽然3.5安装环境没有切换到它作为源并继续使用3.4发行版.

我们无法手动修改环境,因为我们需要配置为自动扩展做好准备.因此,解决方案必须来自.ebextensions中的某些配置.这里的任何帮助将非常感激.

UPDATE

我收到来自AWS支持的电子邮件通知我,因为操作系统和应用程序python环境紧密耦合(即相同),所以无法将应用程序的默认python版本更改为python 3.5.他们建议我创建一个docker镜像.我开始研究如何做到这一点.如果我想出一个解决方案,我会在这里发布.

最佳答案 我最终解决这个问题的方法是创建一个基于python的docker容器,然后切换到使用弹性beanstalk docker配置.我包括下面的脚本来帮助人们.请注意,它不包含uwsgi或supervisor,因为它只是第一次传递.您可能希望根据您的具体情况添加这些内容.

Dockerfile

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"]
点赞