This tutorial show you how to deploy your Laravel application with MySQL database. Let's go!
Before you begin, this guide assumes the following:
Steps to deploy Laravel with Qovery
- Web
- CLI
Sign in to the Qovery web interface.
Deployment
Laravel sample application
Get a local copy of the Laravel sample project by forking it.
Configure your project
To deploy your Laravel application connected to a MySQL, you need to have a .qovery.yml
file, and a Dockerfile
(both provided in the sample project) at the root of your project.
In this example we are using MySQL v8.0
After forking the sample application, you can check the content of .qovery.yml
:
$ cat .qovery.yml
application:name: my-applicationproject: my-projectpublicly_accessible: truedatabases:- type: mysqlversion: "8.0"name: my-dbrouters:- name: mainroutes:- application_name: my-applicationpaths:- /
Authorize the Qovery Github application to get access to your Github account. Once done, all new commits you push to your forked repository will trigger new deployments of the application.
Connect Laravel to MySQL
Credentials of your database are available via environment variables. Qovery injects environment vars at the runtime. To list all the environment variables available to your application, execute
# List all environment variables$ qovery project env list
SCOPE | KEY | VALUEBUILT_IN | QOVERY_JSON_B64 | <base64>BUILT_IN | QOVERY_BRANCH_NAME | masterBUILT_IN | QOVERY_IS_PRODUCTION | trueBUILT_IN | QOVERY_MY_APPLICATION_HOSTNAME | <hidden>BUILT_IN | QOVERY_DATABASE_MY_DB_DATABASE | <hidden>BUILT_IN | QOVERY_DATABASE_MY_DB_PASSWORD | <hidden>BUILT_IN | QOVERY_DATABASE_MY_DB_USERNAME | <hidden>BUILT_IN | QOVERY_DATABASE_MY_DB_PORT | <hidden>BUILT_IN | QOVERY_DATABASE_MY_DB_FQDN | <hidden>BUILT_IN | QOVERY_DATABASE_MY_DB_HOST | <hidden>BUILT_IN | QOVERY_DATABASE_MY_DB_CONNECTION_URI_WITHOUT_CREDENTIALS | <hidden>BUILT_IN | QOVERY_DATABASE_MY_DB_CONNECTION_URI | <hidden>BUILT_IN | QOVERY_DATABASE_MY_DB_VERSION | 8.0BUILT_IN | QOVERY_DATABASE_MY_DB_TYPE | MySQLBUILT_IN | QOVERY_DATABASE_MY_DB_NAME | my-db
The sample application is preconfigured to use those environment variables to connect to the database.
Forking the application with .qovery.yml
and a Dockerfile
should trigger app deployment.
See the deployment status by executing:
# Show your deployment status$ qovery status
BRANCH NAME | STATUS | ENDPOINTS | APPLICATIONS | DATABASESmaster | running | https://main-abcdefgh12345678-gtw.qovery.io | my-application | my-dbAPPLICATION NAME | STATUS | DATABASESmy-application | running | my-dbDATABASE NAME | STATUS | TYPE | VERSION | ENDPOINT | PORT | USERNAME | PASSWORD | APPLICATIONSmy-db | running | MYSQL | 8.0 | <hidden> | <hidden> | <hidden> | <hidden> | my-application
When your application status
is running
, you can use a browser or curl
to access its endpoints.
Trigger a new deployment
Now, you can play with the sample application and commit & push your changes. Qovery detects your actions and triggers new builds and application deployments. Any change you make will be reflected in your deployed application automatically.
Bonuses (optional)
Deploy the application on dev environments
Qovery has a compelling feature known as "environments". Qovery supports the deployment of isolated development environments that reflect your Git branches. Environments are complete copies of all of your data, application, and services like databases. The Environment is useful for testing changes in isolation before merging them to your main branch.
So, do you want to create a new feature, fix a bug, or make modifications without impacting the production or any other important environment? Type the following commands:
$ git checkout -b feat_foo$ git push -u origin feat_foo# show deployment status$ qovery status
BRANCH NAME | STATUS | ENDPOINTS | APPLICATIONS | DATABASESfeat_foo | running | https://main-yenr7erjbs87dk4m-gtw.qovery.io | my-application | my-dbAPPLICATION NAME | STATUS | DATABASESdocker-simple-example | running | my-dbDATABASE NAME | STATUS | TYPE | VERSION | ENDPOINT | PORT | USERNAME | PASSWORD | APPLICATIONSmy-db | running | MySQL | 8.0 | <hidden> | <hidden> | <hidden> | <hidden> | my-application
Test the Laravel application locally
The Qovery motto is: if your application runs locally, it runs well on Qovery, too. To test if your application is running locally, execute the following command:
$ qovery run
Note: qovery run
connects your application to the MySQL database on Qovery.
Conclusion
Congratulations! Now, you know how to deploy your Laravel app with MySQL in just a few steps.
Do you have any feedback about this tutorial? Let us know what you think on Discord, and join our wonderful dev community of +600 devs.
With thanks to Arnaud J. for his contribution to this article.s