[英]Container command fails in Django on Elastic Beanstalk Python 3.7
我在 Elastic Beanstalk (Amazon Linux 2) 上使用 Django Python 3.7 并且以下命令失败:
container_commands:
01_migrate:
command: "pipenv run python ./manage.py migrate"
leader_only: true
2020-07-17 09:31:57,017 [ERROR] Command 01_migrate (pipenv run python ./manage.py migrate) failed
2020-07-17 09:31:57,017 [ERROR] Error encountered during build of postbuild_0_sarahandanatol: Command 01_migrate failed
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 542, in run_config
CloudFormationCarpenter(config, self._auth_config).build(worklog)
File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 260, in build
changes['commands'] = CommandTool().apply(self._config.commands)
File "/usr/lib/python2.7/site-packages/cfnbootstrap/command_tool.py", line 117, in apply
raise ToolError(u"Command %s failed" % name)
ToolError: Command 01_migrate failed
我试图在我的沙盒帐户上复制这个问题。 它是带有欢迎屏幕的 django 的最小版本。 没有数据库,也没有使用环境变量。
我的Pipfile
也很小:
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
django = "*"
djangorestframework = "*"
[requires]
python_version = "3.7"
我可以确认使用普通 pipenv 失败。 具体来说,我的.ebextantions
中有以下配置文件
container_commands:
10_migrate:
command: |
pipenv run python ./manage.py migrate
错误消息是关于缺少 Django 。
但是,对我来说,解决方案如下:
container_commands:
10_migrate:
command: |
source $PYTHONPATH/activate
pipenv run python ./manage.py migrate
这会激活 python 环境,EB 在执行 pipenv 之前使用该环境安装 Pipfile 依赖项。
下面是一个版本,它还将加载运行迁移作业可能需要的 EB 环境变量,如果您传递了数据库连接详细信息的话。
container_commands:
10_migrate:
command: |
export $(cat /opt/elasticbeanstalk/deployment/env | xargs)
source $PYTHONPATH/activate
pipenv run python ./manage.py migrate
这是来自/var/log/cfn-init-cmd.log
的示例 output,显示迁移运行成功:
20-07-18 04:50:41,615 P3836 [INFO] Command 10_migrate
2020-07-18 04:50:42,969 P3836 [INFO] -----------------------Command Output-----------------------
2020-07-18 04:50:42,969 P3836 [INFO] cat: /opt/elasticbeanstalk/deployment/env: No such file or directory
2020-07-18 04:50:42,969 P3836 [INFO] export EB_IS_COMMAND_LEADER="true"
2020-07-18 04:50:42,969 P3836 [INFO] export HOME="/root"
2020-07-18 04:50:42,969 P3836 [INFO] export MYVAR="my-eb-env-value"
2020-07-18 04:50:42,969 P3836 [INFO] export OLDPWD
2020-07-18 04:50:42,970 P3836 [INFO] export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
2020-07-18 04:50:42,970 P3836 [INFO] export PWD="/var/app/staging"
2020-07-18 04:50:42,970 P3836 [INFO] export PYTHONPATH="/var/app/venv/staging-LQM1lest/bin"
2020-07-18 04:50:42,970 P3836 [INFO] export SHLVL="4"
2020-07-18 04:50:42,970 P3836 [INFO] export _="/bin/jq"
2020-07-18 04:50:42,970 P3836 [INFO] Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that environment, instead of creating its own for any project. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force pipenv to ignore that environment and create its own instead. You can set PIPENV_VERBOSITY=-1 to suppress this warning.
2020-07-18 04:50:42,970 P3836 [INFO] Operations to perform:
2020-07-18 04:50:42,970 P3836 [INFO] Apply all migrations: admin, auth, contenttypes, sessions
2020-07-18 04:50:42,970 P3836 [INFO] Running migrations:
2020-07-18 04:50:42,970 P3836 [INFO] Applying contenttypes.0001_initial... OK
2020-07-18 04:50:42,970 P3836 [INFO] Applying auth.0001_initial... OK
2020-07-18 04:50:42,970 P3836 [INFO] Applying admin.0001_initial... OK
2020-07-18 04:50:42,970 P3836 [INFO] Applying admin.0002_logentry_remove_auto_add... OK
2020-07-18 04:50:42,970 P3836 [INFO] Applying admin.0003_logentry_add_action_flag_choices... OK
2020-07-18 04:50:42,971 P3836 [INFO] Applying contenttypes.0002_remove_content_type_name... OK
2020-07-18 04:50:42,971 P3836 [INFO] Applying auth.0002_alter_permission_name_max_length... OK
2020-07-18 04:50:42,971 P3836 [INFO] Applying auth.0003_alter_user_email_max_length... OK
2020-07-18 04:50:42,971 P3836 [INFO] Applying auth.0004_alter_user_username_opts... OK
2020-07-18 04:50:42,971 P3836 [INFO] Applying auth.0005_alter_user_last_login_null... OK
2020-07-18 04:50:42,971 P3836 [INFO] Applying auth.0006_require_contenttypes_0002... OK
2020-07-18 04:50:42,971 P3836 [INFO] Applying auth.0007_alter_validators_add_error_messages... OK
2020-07-18 04:50:42,971 P3836 [INFO] Applying auth.0008_alter_user_username_max_length... OK
2020-07-18 04:50:42,971 P3836 [INFO] Applying auth.0009_alter_user_last_name_max_length... OK
2020-07-18 04:50:42,971 P3836 [INFO] Applying auth.0010_alter_group_name_max_length... OK
2020-07-18 04:50:42,971 P3836 [INFO] Applying auth.0011_update_proxy_permissions... OK
2020-07-18 04:50:42,971 P3836 [INFO] Applying sessions.0001_initial... OK
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.