Implementação na cloud
A implementação em infraestruturas cloud e conceitos como Microsserviços e Twelve-Factor apresentam requisitos específicos para como o software é projetado e implementado. A pygeoapi suporta estes conceitos, tendo uma pegada baixa em CPU e memória, e não persiste estado do utilizador, sendo portanto capaz de escalar sem riscos.
pygeoapi e Docker
Uma imagem Docker está disponível para a pygeoapi. Pode executar a imagem localmente como:
docker run -p 5000:80 geopython/pygeoapi:latest
docker run -p 5000:80 geopython/pygeoapi:latest
Rever o Dockerfile da pygeoapi
Note no Dockerfile da pygeoapi como o ficheiro open api é gerado como parte do script de arranque do Docker.
Numa configuração típica, substituir-se-ia o ficheiro de configuração padrão da pygeoapi na imagem por um personalizado e incluir a pasta de dados:
usar configuração personalizada
docker run -p 5000:80 \
-v $(pwd)/pygeoapi-config.yml:/pygeoapi/local.config.yml \
-v $(pwd)/geodata:/geodata https://hub.docker.com/r/geopython/pygeoapi:latest
docker run -p 5000:80 -v ${pwd}/pygeoapi-config.yml:/pygeoapi/local.config.yml -v ${pwd}/geodata:/geodata https://hub.docker.com/r/geopython/pygeoapi:latest
Alternativamente, pode construir uma nova imagem Docker incluindo tanto a configuração como os dados para o serviço.
FROM geopython/pygeoapi:latest
COPY ./my.config.yml /pygeoapi/local.config.yml
Pode ter notado que o ficheiro de configuração da pygeoapi inclui uma referência ao endpoint no qual a pygeoapi é publicada. Esta configuração deve corresponder ao endpoint público do serviço (domínio, caminho e porta).
Por defeito, a imagem Docker da pygeoapi executará a partir do caminho raiz /
. Se precisar de executar a partir de um sub-caminho e ter todos os URLs internos corretos pode
definir a variável de ambiente SCRIPT_NAME
.
docker run -p 5000:80 -e SCRIPT_NAME='/mypygeoapi' \
-v $(pwd)/my.config.yml:/pygeoapi/local.config.yml -it geopython/pygeoapi
# navegue para http://localhost:5000/mypygeoapi
docker run -p 5000:80 -e SCRIPT_NAME='/mypygeoapi' -v ${pwd}/my.config.yml:/pygeoapi/local.config.yml -it geopython/pygeoapi
# navegue para http://localhost:5000/mypygeoapi
Resumo
Parabéns! Agora pode implementar a pygeoapi como um serviço cloud native.