Reputation: 14771
I am deploying a Laravel application to the ElasticBeanstalk. Now, I am trying to SSH into the EC2 instance of my Beanstalk environment and run a command.
php artisan migrate --force
But I cannot run it. The command is failing because it is not getting the environment variables set in the Beanstalk Environment. Here is what I did.
I ssh into the instance. Then I go to the /var/www/html folder. Then I run the "php artisan migrate --force" command. As I mentioned it is failing because it is not getting the database credentials set in the Beanstalk environment. I also tried this.
sudo -u root php artisan migrate --force
The same thing happened. I also played around with tinker in the terminal. When I retrieve the app name like env('APP_NAME'), it is returning null. What is the issue and how can I fix it?
Upvotes: 6
Views: 3079
Reputation: 238051
The command is failing because it is not getting the environment variables set in the Beanstalk Environment.
On Amazon Linux 2 (AL2), the EB env variables are stored in /opt/elasticbeanstalk/deployment/env
. Thus when you ssh to your EB instance, you can use the following to populate your env variables (need to sudo to root firs):
sudo su
export $(cat /opt/elasticbeanstalk/deployment/env | xargs)
echo $YOU_ENV_NAME_FORM_EB
This is undocumented way of doing this on AL2.
Note:
The env variables shouldn't have spaces. Also the file is not immediately available. It gets created when deployment succeeds.
Upvotes: 26