Pular para conteúdo

Docker

Rode o agrobr sem instalar Python localmente.

Requisitos

Build

docker build -t agrobr .

Uso interativo

docker run -it --rm agrobr

Abre um Python REPL com o agrobr instalado:

>>> from agrobr.sync import cepea
>>> df = cepea.indicador('soja', inicio='2024-01-01')
>>> print(df.head())

CLI

docker run --rm agrobr agrobr --version
docker run --rm agrobr agrobr cepea indicador boi
docker run --rm agrobr agrobr conab safras soja

Persistir cache

Sem volume mount, o cache DuckDB é perdido quando o container encerra.

docker run -it --rm -v agrobr-cache:/home/agrobr/.agrobr agrobr

O named volume agrobr-cache persiste entre execuções.

Rodar scripts locais

docker run --rm -v "$(pwd)":/work agrobr python /work/meu_script.py

Extras

A imagem default ja inclui os extras browser (Playwright + Chromium) e pdf (pdfplumber), necessarios para CONAB, ANDA, Lista Suja e Rio Verde respectivamente.

O --build-arg EXTRAS substitui o default. Para adicionar extras, inclua os defaults:

docker build --build-arg EXTRAS="browser,pdf,polars" -t agrobr:extras .

Compatibilidade

Extra Docker Notas
browser sim (default) Playwright + Chromium. Necessario para CONAB
pdf sim (default) pdfplumber, puro Python. Necessario para ANDA, Lista Suja, Rio Verde
polars sim Wheels manylinux pre-built
bigquery sim Google Cloud client
geo incerto geopandas/pyogrio pode funcionar (GDAL bundled no wheel). Nao verificado
app sim Streamlit funciona, mas adiciona ~200MB e requer -p 8501:8501
dev nao usar Ferramentas de dev (pytest, ruff, mypy)
docs nao usar mkdocs

Python version

A imagem default usa Python 3.11. Para outras versoes:

docker build --build-arg PYTHON_VERSION=3.12 -t agrobr:py312 .

Versoes suportadas: 3.11, 3.12, 3.13.

Variáveis de ambiente

Todas as configuracoes sao customizaveis via env vars:

docker run -it --rm \
  -e AGROBR_CACHE_CACHE_DIR=/data/cache \
  -e AGROBR_HTTP_TIMEOUT_READ=60 \
  -e AGROBR_HTTP_MAX_RETRIES=5 \
  -v agrobr-data:/data \
  agrobr
Prefixo Configuracao
AGROBR_CACHE_ Diretorio de cache, nome do banco DuckDB
AGROBR_HTTP_ Timeouts, retries, rate limits por fonte
AGROBR_ALERT_ Webhooks Slack/Discord, SendGrid

Limitações

  • agrobr health / agrobr doctor retornam ImportError no container. Esses modulos sao privados e excluidos do wheel. Mesmo comportamento de pip install agrobr do PyPI.
  • Cache efemero sem volume mount. Use -v agrobr-cache:/home/agrobr/.agrobr.
  • Imagem ~2.3GB (Chromium ~1.5GB + pandas ~100MB + duckdb ~80MB + demais deps).
  • agrobr/data/censo_1985/ — 11MB de CSVs estaticos incluidos na imagem (dados runtime do ibge.censo_municipal_1985()).