Eine einfache API mit Shell Script, Docker und Laravel
Die Docker-Version sollte >18.00 sein
Befolgen Sie diese einfachen Schritte zum funktionierenden API-Projekt
Klonen Sie das Repository
git clone https://github.com/gazra-labs/laravel-docker-apis.git
cd laravel-docker-apis
Führen Sie die Datei start.sh
aus. Die Datei führt die folgenden Befehle aus
Die obige Datei start.sh führt die folgenden Befehle aus
A. Kopieren Sie die .env-Datei
cp .env.example .env
Sie können Ihren Google API-Schlüssel in die .env-Datei eingeben.
B. Starten Sie Docker und erstellen Sie den Build
docker-compose down -v && docker-compose build && docker-compose up -d
C. Um Composer im Verzeichnis zu installieren
docker-compose exec laravel-app composer install
D. Um die Datenbank in Docker zu migrieren
docker-compose exec laravel-app php artisan key:generate
docker-compose exec laravel-app php artisan migrate --seed
e. Generieren eines API-Dokuments
docker-compose exec laravel-app php artisan l5-swagger:generate
F. Um die URL des Arbeitsverzeichnisses zu überprüfen
docker ps -a
G. Durchführen von PHPUnit-Tests
sleep 120
docker exec laravel-app ./vendor/bin/phpunit
Klicken Sie auf die URL und Sie finden das Arbeitsprojekt. Die Arbeits-URL wäre http://0.0.0.0:8000
Es gibt 3 APIs mit unterschiedlichen Methoden. Zum Auflisten, Erstellen und Aktualisieren einer Bestellung
Parameter | Werte | Bemerkungen |
---|---|---|
URL | 0.0.0.0:8000 | Bitte überprüfen Sie docker ps -a um die aktuelle Arbeits-URL zu bestätigen |
API-Pfad | {URL} | |
Endpunkt | {URL}/orders?page=:page&limit=:limit | Beispiel für Listenbestellungen |
Beispiel für einen vollständigen URI | http://0.0.0.0:8000/api/orders?page=:page&limit=:limit | |
API-Dokumentation | {URL}/api/documentation | |
Codeabdeckung | {URL}/CodeCoverage/ |
Listenreihenfolge-API:
Name | Werte |
---|---|
Endpunkt | {URL}/orders?page=:page&limit=:limit |
Verfahren | ERHALTEN |
JSON angefordert | Kein JSON-Body |
Antwort JSON
[
{
"id": 1,
"distance": 10636,
"status": "UNASSIGNED"
},
{
"id": 2,
"distance": 13634,
"status": "UNASSIGNED"
},
...
]
Auftrag erstellen:
Name | Werte |
---|---|
Endpunkt | {URL}/Bestellungen |
Verfahren | POST |
JSON angefordert
{
"origin": ["25.3260412","77.4978736"],
"destination": ["25.127270", "76.855173"]
}
Antwort-JSON:
{
"id": 51,
"distance": 12378.83,
"status": "UNASSIGNED"
}
Reihenfolge aktualisieren:
Name | Werte |
---|---|
Endpunkt | {URL}/orders/{id} |
Verfahren | PATCH |
JSON angefordert
{
"status": "TAKEN"
}
Antwort JSON
{
"status": "SUCCESS"
}
So testen Sie PHP-Unit-Tests
docker exec laravel-app ./vendor/bin/phpunit
Um mit devuser unter dem Container zu arbeiten ...
docker exec -it laravel-app bash -c "sudo -u devuser /bin/bash"
Um unter MySQL-Server im Container mit Devuser zu arbeiten. (Passwort = 123456)
docker exec -it mysql-db bash -c "mysql -u admin -psecret -p"
Wenn der Build nicht funktioniert, versuchen Sie es bitte mit diesen Befehlen
Um alle Docker-Systeme zu entfernen und zu aktualisieren docker system prune -a
Um alle funktionierenden und nicht gesperrten Container zu stoppen docker stop $(docker ps -a -q)
Um alle funktionierenden und nicht verwendeten Container zu entfernen docker rm $(docker ps -a -q)
Um das Image lokal zu erstellen, starten Sie den Build und verwenden Sie keine Cache-Argumente docker-compose build --no-cache && docker-compose up -d && docker-compose logs -f