description |
---|
Create a containerized development environment so you can build, test and contribute to Speedtest Tracker. |
Speedtest Tracker is built on the Laravel framework, this means we get to use some awesome 1st party packages like Laravel Sail to create a local containerized development environment.
These directions will walk you through the steps of setting up that environment.
{% hint style="info" %} These directions assume you have a working knowledge of the Laravel framework. If you have questions on how to use it the Laravel Docs and Laracasts series on "Laravel from Scratch" are a good place to start. {% endhint %}
First let's clone the repository to your machine, I prefer GitHub's CLI so that command is included below.
gh repo clone alexjustesen/speedtest-tracker \
&& cd speedtest-tracker
Next we need to make a copy of .env.example
, the environment file is what Laravel uses.
cp .env.example .env
You will copy and fill in the following Environment Variables
APP_NAME="Speedtest Tracker"
APP_ENV=local
APP_KEY=
APP_DEBUG=false
APP_TIMEZONE=UTC
{% hint style="info" %} Generate the APP_KEY at https://speedtest-tracker.dev {% endhint %}
We'll use a temporary container to install the Composer dependencies for the application.
docker run --rm \
-u "$(id -u):$(id -g)" \
-v "$(pwd):/var/www/html" \
-w /var/www/html \
laravelsail/php83-composer:latest \
composer install --ignore-platform-reqs
We utilize Laravel Sail for a local development environment this way on your machine the only requirements are Git and Docker. To build the development environment run the commands below.
./vendor/bin/sail build --no-cache
# or if you have a Sail alias setup...
sail build --no-cache
To start up the environment we can now use the Sail binary that is included with the package to start our development environment.
./vendor/bin/sail up -d
# or if you have a Sail alias setup...
sail up -d
To start up the environment we need to make a database
touch database/database.sqlite
As well need to make the needed tables etc in the database.
./vendor/bin/sail artisan migrate:fresh --force
# or if you have a Sail alias setup...
sail artisan migrate:fresh --force
We will need to install the needed NPM assets
./vendor/bin/sail npm install && ./vendor/bin/sail npm run build
# or if you have a Sail alias setup...
sail npm install && sail npm run build
You can reset your development environment at any time by re-running a fresh migration:
./vendor/bin/sail artisan migrate:fresh --force
# or if you have a Sail alias setup...
sail artisan migrate:fresh --force
Processes like running a speedtest and sending notifications are offloaded to be run by a worker process. If you're testing or developing anything requiring the queue jobs be processed run the command below.
./vendor/bin/sail artisan queue:work
# or if you have a Sail alias setup...
sail artisan queue:work
To keep PHP's code style consistent across multiple contributors a successful lint workflow is required to pass. Check your code quality locally by running the command below and fixing it's recommendations.
./vendor/bin/sail bin duster lint --using=pint -v
# or if you have a Sail alias setup...
sail bin duster lint --using=pint -v
When you're done in the environment you can stop the containers using the command below.
./vendor/bin/sail down
# or if you have a Sail alias setup...
sail down