💬🐳 Rin Minase's Anime Database API Service utilizing Lumen 7 by Laravel and Mongo DB Atlas and is deployed to Heroku
Add info here
Return to the table of contents
Database
Definition of terms:
DB_PASSWORD - database password
Notes : DB_HOST should use docker container name of db, by default this is ‘anidb-pgsql’, but yours could be different. You can check this by running docker ps
then check the container name of the postgres
container.
Cloudinary
API Environment variable
to CLOUDINARY_URL
of your ENV fileReturn to the table of contents
Download and install Docker.
Clone the project, then install the dependencies
git clone https://github.com/RinMinase/anidb-be.git
cd anidb-be
Run the necessary docker containers
docker compose up -d
docker compose exec php sh
This runs only the necessary containers. As for running the optional containers, please see the section below.
Inside the docker image, copy the env file, install the necessary dependencies and generate the necessary key for laravel
cp .env.example .env
composer install
php artisan key:generate
Generate the necessary API key and take note of this is as this is REQUIRED to access the API
php artisan app:generate-api-key
or you can generate your own from any application, and add it under API_KEY
in your .env
file. Example:
openssl rand -hex 36
Generate the necessary root password key and take note of this is as this is REQUIRED to create admin accounts
php artisan app:generate-root-password
or generate your own, and add it under APP_REGISTRATION_ROOT_PASSWORD
in your .env
file.
Run the database migrations
php artisan migrate:fresh --seed
(Optional) If you want to start the scheduler
and queue
workers
supervisorctl start worker:
Lastly, fire up your browser and go to localhost
.
Note:
If you need to access the container run, docker compose exec php sh
Return to the table of contents
In cases there are any updates to:
app/Jobs
)app/Commands
)bootstrap/app.php
under withSchedule
)Please run the following:
Navigate inside the php
docker container [how]
Run the command to restart the queue-worker
and schedule-worker
)
supervisorctl restart worker:
Return to the table of contents
This application runs supervisor on the php
container. Supervisor runs these tasks:
Task Name | Group | Command | Description |
---|---|---|---|
php-fpm | - | php-fpm |
Runs FastCGI Process Manager |
queue-worker | worker | php artisan queue:work |
Runs Laravel’s Queue worker |
schedule-worker | worker | php artisan schedule:work |
Runs Laravel’s Schedule worker |
To manage the supervisor the commands below can be used:
Command | Description |
---|---|
supervisorctl reread | Re-reads changes in supervisor config files |
supervisorctl update | Updates supervisor with changes after reread |
supervisorctl status | Check status of all running tasks |
supervisorctl start |
Starts the task |
supervisorctl stop |
Stops the task |
supervisorctl restart |
Restarts the task |
Please note: Supervisor logs are kept in ./docker/logs/supervisor.log
Return to the table of contents
List of optional containers:
Name | Description |
---|---|
(none) | None as of yet |
You can run them individually by:
docker compose up -d <name>
Or run all of them by:
docker compose up -d --profile optional
Return to the table of contents
Navigate inside the php
docker container
docker compose exec php sh
Run the migrations when necessary, then install the dependencies also when necessary
php artisan migrate
composer install
Fire up your browser and go to localhost
.
Return to the table of contents
Navigate inside the php
docker container [how]
Run the command to run the worker for the queue
php artisan queue:work
Return to the table of contents
Navigate inside the php
docker container [how]
Run the command to run the scheduled tasks manually
php artisan schedule:work
There are a few commands specific to running tasks:
Name | Description |
---|---|
schedule:run |
Runs the scheduled tasks manually with respect to cron |
schedule:work |
Runs the scheduler worker |
schedule:list |
Lists the upcoming tasks to be run |
Return to the table of contents
Navigate inside the php
docker container [how]
Run the command to generate the documentations inside the container
docs
Fire up your browser and go to localhost/docs
to open Swagger UI.
Return to the table of contents
Navigate inside the php
docker container [how]
Run the command below:
php artisan test
or if you want to run a specific test module
php artisan test --filter <Class name of Test File | function name>
or if you want to run a specific single test
php artisan test --filter test_function_name tests/Location/of/TestCase.php
Return to the table of contents
This shortcuts were created to reduce the need to keep typing the same long commands over and over again.
Shortcut | Long version |
---|---|
pa or artisan |
php artisan |
docs |
composer docs |
dump or da |
composer dumpautoload |
sv |
supervisorctl |
Return to the table of contents
.
├── app/ # Application source code
│ ├── docs.blade.php # Swagger page template
│ ├── index.blade.php # Landing page template
│ └── ... # Other application-related files
├── bootstrap/ # Project initializers
│ ├── app.php # Framework bootstrapper
│ ├── helpers.php # Helper functions
│ └── routes.php # Route definitions
├── config/ # Laravel configuration files
├── database/ # Database migrations and seeders
├── docker/ # Docker functions
│ ├── php-config/ # PHP settings for docker
│ ├── caddyfile # Caddy container docker file
│ ├── php.dockerfile # PHP container docker file
│ └── ... # Other docker-related files
├── public/ # Project entry point
├── tests/ # Project test files
├── .czrc # Commitizen configuration file
├── docker-compose.yml # Main docker file
├── phpunit.xml # Unit test configuration file
├── Procfile # Heroku process file
└── ... # Other project files