Skip to content

Instantly share code, notes, and snippets.

@harrisonde
Last active May 24, 2021 22:01
Show Gist options
  • Save harrisonde/90431ed357cc93e12b51 to your computer and use it in GitHub Desktop.
Save harrisonde/90431ed357cc93e12b51 to your computer and use it in GitHub Desktop.
Deploy Laravel 5 applications on AWS Elastic Beanstalk
# The following script will deploy a Laravel 5 applicaion on AWS Elastic Beanstalk.
# Add to .ebextensions at the root of your application and name your commands file (e.g., commands.config)
# -------------------------------- Commands ------------------------------------
# Use "commands" key to execute commands on the EC2 instance. The commands are
# processed in alphabetical order by name, and they run before the application
# and web server are set up and the application version file is extracted.
# ------------------------------------------------------------------------------
commands:
01updateComposer:
command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: COMPOSER_HOME
value: /root
- namespace: aws:elasticbeanstalk:container:php:phpini
option_name: document_root
value: /public
- namespace: aws:elasticbeanstalk:container:php:phpini
option_name: memory_limit
value: 512M
# Create RDS database, requires adding env variables.
# Resources:
# AWSEBRDSDatabase:
# Type: AWS::RDS::DBInstance
# Properties:
# AllocatedStorage: 5
# DBInstanceClass: db.t1.micro
# DBName: #insert db name
# Engine: mysql
# EngineVersion: 5.6
# MasterUsername: #insert name
# MasterUserPassword: #insert pass
# ---------------------------- Container Commands ------------------------------
# You can use the container_commands key to execute commands for your container.
# The commands in container_commands are processed in alphabetical order by
# name. They run after the application and web server have been set up and the
# application version file has been extracted, but before the application
# version is deployed. They also have access to environment variables such as
# your AWS security credentials. Additionally, you can use leader_only. One
# instance is chosen to be the leader in an Auto Scaling group. If the
# leader_only value is set to true, the command runs only on the instance
# that is marked as the leader.
#
# Artisan commands include environment flag for production. If you are not
# deploying to a production environment, update the flag.
# ------------------------------------------------------------------------------
container_commands:
01express:
command: "echo AWS Container Commands started, starting Composer install."
02installComposer:
command: "php /opt/elasticbeanstalk/support/composer.phar install"
cwd: "/var/app/ondeck"
03express:
command: "echo Composer install completed, starting Laravel migration"
04migrations:
command: "php artisan migrate --env=production"
cwd: "/var/app/ondeck"
05express:
command: "echo Completed Laravel migration, starting Laravel database seeding"
06seeds:
command: "php artisan db:seed --env=production"
cwd: "/var/app/ondeck"
leader_only: true
07express:
command: "echo Completed database seeting, Container Commands complete."
@hasan-haider
Copy link

You rock

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment