Last active
May 24, 2021 22:01
-
-
Save harrisonde/90431ed357cc93e12b51 to your computer and use it in GitHub Desktop.
Deploy Laravel 5 applications on AWS Elastic Beanstalk
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You rock