Une API simple avec Shell Script, Docker et Laravel
La version de Docker doit être >18h00
Suivez ces étapes simples pour travailler sur un projet API
Cloner le référentiel
git clone https://github.com/gazra-labs/laravel-docker-apis.git
cd laravel-docker-apis
Exécutez le fichier start.sh
, le fichier exécutera les commandes suivantes
Le fichier start.sh ci-dessus exécutera les commandes suivantes
un. Copier le fichier .env
cp .env.example .env
Vous pouvez saisir votre clé API Google dans le fichier .env.
b. Démarrer Docker et créer une compilation
docker-compose down -v && docker-compose build && docker-compose up -d
c. Pour installer composer dans le répertoire
docker-compose exec laravel-app composer install
d. Pour migrer la base de données vers Docker
docker-compose exec laravel-app php artisan key:generate
docker-compose exec laravel-app php artisan migrate --seed
e. Génération d'un document API
docker-compose exec laravel-app php artisan l5-swagger:generate
f. Pour vérifier l'URL du répertoire de travail
docker ps -a
g. Effectuer des tests PHPUnit
sleep 120
docker exec laravel-app ./vendor/bin/phpunit
Appuyez sur l'URL et vous trouverez le projet de travail. L'URL de travail serait http://0.0.0.0:8000
Il existe 3 API avec des méthodes différentes. Pour lister, créer et mettre à jour une commande
Paramètres | Valeurs | Remarques |
---|---|---|
URL | 0.0.0.0:8000 | Veuillez vérifier docker ps -a pour confirmer l'URL de travail actuelle |
Chemin d'accès à l'API | {URL} | |
Point final | {URL}/orders?page=:page&limit=:limit | Exemple de commandes de liste |
Exemple d'URI complet | http://0.0.0.0:8000/api/orders?page=:page&limit=:limit | |
Documentation API | {URL}/api/documentation | |
Couverture des codes | {URL}/CodeCouverture/ |
API de commande de liste :
Nom | Valeurs |
---|---|
Point final | {URL}/orders?page=:page&limit=:limit |
Méthode | OBTENIR |
JSON demandé | Pas de corps JSON |
Réponse JSON
[
{
"id": 1,
"distance": 10636,
"status": "UNASSIGNED"
},
{
"id": 2,
"distance": 13634,
"status": "UNASSIGNED"
},
...
]
Créer une commande :
Nom | Valeurs |
---|---|
Point final | {URL}/commandes |
Méthode | POSTE |
JSON demandé
{
"origin": ["25.3260412","77.4978736"],
"destination": ["25.127270", "76.855173"]
}
Réponse JSON :
{
"id": 51,
"distance": 12378.83,
"status": "UNASSIGNED"
}
Ordre de mise à jour :
Nom | Valeurs |
---|---|
Point final | {URL}/commandes/{id} |
Méthode | CORRECTIF |
JSON demandé
{
"status": "TAKEN"
}
Réponse JSON
{
"status": "SUCCESS"
}
Pour tester les tests unitaires PHP
docker exec laravel-app ./vendor/bin/phpunit
Pour travailler sous le conteneur avec devuser...
docker exec -it laravel-app bash -c "sudo -u devuser /bin/bash"
Pour travailler sous le serveur mysql dans le conteneur avec devuser.. (Mot de passe = 123456)
docker exec -it mysql-db bash -c "mysql -u admin -psecret -p"
Si la construction ne fonctionne pas, essayez ces commandes
Pour supprimer et actualiser tous les systèmes Docker docker system prune -a
Pour arrêter tous les conteneurs fonctionnels et non utilisés docker stop $(docker ps -a -q)
Pour supprimer tous les conteneurs fonctionnels et non utilisés docker rm $(docker ps -a -q)
Pour créer une image localement, démarrez la construction et n'utilisez aucun argument de cache docker-compose build --no-cache && docker-compose up -d && docker-compose logs -f