# CropIntel ML stack: reproducible Python + TensorFlow without touching host Python. # Data and trained weights live in mounted volumes (still gitignored on the host). # # Quick smoke test (no Kaggle): # docker compose -f docker-compose.ml.yml build # docker compose -f docker-compose.ml.yml run --rm ml \ # python -m ml.scripts.create_synthetic_dataset --crop corn --force # docker compose -f docker-compose.ml.yml run --rm ml \ # python -m ml.training.train_crop --crop corn --epochs 2 --no-fine-tune # # With Kaggle (mount token; dataset terms must be accepted on the website): # docker compose -f docker-compose.ml.yml run --rm -v "$HOME/.kaggle:/root/.kaggle:ro" ml \ # python -m ml.scripts.download_datasets services: ml: build: context: . dockerfile: Dockerfile.ml image: cropintel-ml:local working_dir: /app environment: PYTHONPATH: /app volumes: - ./ml/data:/app/ml/data - ./ml/models:/app/ml/models # Optional Kaggle token (only if downloading inside Docker): # docker compose -f docker-compose.ml.yml run --rm -v ~/.kaggle:/root/.kaggle:ro ml ...