APIs simples com Shell Script, Docker e Laravel
A versão do Docker deve ser> 18.00
Siga estas etapas simples para trabalhar no projeto de API
Clonar o repositório
git clone https://github.com/gazra-labs/laravel-docker-apis.git
cd laravel-docker-apis
Execute o arquivo start.sh
, o arquivo executará os seguintes comandos
O arquivo start.sh acima executará os seguintes comandos
um. Copie o arquivo .env
cp .env.example .env
Você pode inserir sua chave de API do Google no arquivo .env.
b. Inicie o Docker e faça a construção
docker-compose down -v && docker-compose build && docker-compose up -d
c. Para instalar o compositor no diretório
docker-compose exec laravel-app composer install
d. Para migrar o banco de dados para o docker
docker-compose exec laravel-app php artisan key:generate
docker-compose exec laravel-app php artisan migrate --seed
e. Gerando Documento API
docker-compose exec laravel-app php artisan l5-swagger:generate
f. Para verificar o URL do diretório de trabalho
docker ps -a
g. Executando testes PHPUnit
sleep 120
docker exec laravel-app ./vendor/bin/phpunit
Clique na URL e você encontrará o projeto em funcionamento. O URL de trabalho seria http://0.0.0.0:8000
Existem 3 APIs com métodos diferentes. Para listar, criar e atualizar pedido
Parâmetros | Valores | Observações |
---|---|---|
URL | 0.0.0.0:8000 | Por favor, verifique docker ps -a para confirmar o URL de trabalho atual |
Caminho da API | {URL} | |
Ponto final | {URL}/orders?page=:page&limit=:limit | Exemplo de pedidos de lista |
Exemplo de URI completo | http://0.0.0.0:8000/api/orders?page=:page&limit=:limit | |
Documentação da API | {URL}/api/documentação | |
Cobertura de código | {URL}/CodeCoverage/ |
API de pedido de lista:
Nome | Valores |
---|---|
Ponto final | {URL}/orders?page=:page&limit=:limit |
Método | PEGAR |
JSON solicitado | Sem corpo JSON |
JSON de resposta
[
{
"id": 1,
"distance": 10636,
"status": "UNASSIGNED"
},
{
"id": 2,
"distance": 13634,
"status": "UNASSIGNED"
},
...
]
Criar pedido:
Nome | Valores |
---|---|
Ponto final | {URL}/pedidos |
Método | PUBLICAR |
JSON solicitado
{
"origin": ["25.3260412","77.4978736"],
"destination": ["25.127270", "76.855173"]
}
JSON de resposta:
{
"id": 51,
"distance": 12378.83,
"status": "UNASSIGNED"
}
Ordem de atualização:
Nome | Valores |
---|---|
Ponto final | {URL}/pedidos/{id} |
Método | CORREÇÃO |
JSON solicitado
{
"status": "TAKEN"
}
JSON de resposta
{
"status": "SUCCESS"
}
Para testar o teste de unidade PHP
docker exec laravel-app ./vendor/bin/phpunit
Para trabalhar no Container com devuser...
docker exec -it laravel-app bash -c "sudo -u devuser /bin/bash"
Para trabalhar no servidor mysql no contêiner com devuser.. (Senha = 123456)
docker exec -it mysql-db bash -c "mysql -u admin -psecret -p"
Se a compilação não funcionar, tente estes comandos
Para remover e atualizar todo o sistema docker docker system prune -a
Para interromper todos os contêineres em funcionamento e não usados docker stop $(docker ps -a -q)
Para remover todos os contêineres funcionais e não usados docker rm $(docker ps -a -q)
Para construir a imagem localmente, inicie a construção e não use args de cache docker-compose build --no-cache && docker-compose up -d && docker-compose logs -f