gpt4 book ai didi

linux - Laravel - 弹性 beantalk 上的配置缓存

转载 作者:太空宇宙 更新时间:2023-11-04 09:15:40 31 4
gpt4 key购买 nike

我有一个在 Elastic Beanstalk 环境中运行的 Laravel 应用程序。无法访问数据库、S3 和 SQS 变量 我确实在 ebxtensions 上编写了一个配置,以便在部署期间使用 echo 在 .sh Hook 文件上复制一些环境变量到 .env 文件上 -像这样部署:

echo -e "AWS_BUCKET=$AWS_BUCKET" >> /var/app/current/.env

.env 文件已正确更新,但在完成后运行的另一个 .sh Hook 具有以下代码:

php /var/app/current/artisan config:cache

这会保存缓存的配置文件,因为 .env 文件尚未更新。

现在 config:cache 命令需要在部署后手动运行,但我真的想让这个过程完全自动化。

知道为什么会这样吗?

最佳答案

EB deploy的过程很有意思,看看/var/log/eb-activity.log

  ++ /opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir
+ EB_APP_DEPLOY_DIR=/var/app/current
+ '[' -d /var/app/current ']'
+ mv /var/app/current /var/app/current.old
+ mv /var/app/ondeck /var/app/current
+ nohup rm -rf /var/app/current.old

因此,您的 config:cache 在部署后删除的先前环境中运行。您应该在 .ebextensions/01-post.config 中使用此后 Hook :

files:
/opt/elasticbeanstalk/hooks/appdeploy/post/01_create_cache.sh:
mode: "000755"
owner: root
group: root
content: |
php /var/app/current/artisan config:cache >>/var/log/artisan_test.log

但请谨慎使用!它仅从 .env 获取变量,来自 EB 变量!正确的方法是将所有变量收集到 .env,然后生成配置缓存。

files:
/opt/elasticbeanstalk/hooks/appdeploy/post/01_create_cache.sh:
mode: "000755"
owner: root
group: root
content: |
source /opt/elasticbeanstalk/support/envvars && /usr/bin/php /var/www/html/artisan config:cache >>/var/log/artisan_test.log

关于linux - Laravel - 弹性 beantalk 上的配置缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48103280/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com