A multi-container Docker application that runs two essential services:
- GLOWPA Container - Running the GLOWPA-R application
- Web Application - A Python Flask backend with React frontend
- Docker Desktop installed and running
- Internet connection (for pulling Docker images)
Simply double-click start.bat to start all containers and launch the web application.
- Make the script executable (one-time setup):
chmod +x start.sh
- Double-click
start.shor run from terminal:./start.sh
Simply close the terminal window or press Ctrl+C in the terminal. The containers will automatically stop when you close the application.
Once running, you can access:
- Main Web Application: http://localhost:3000
- GLOWPA Service: http://localhost:8080
- Flask Backend API: http://localhost:5000
waterpath-scenario-builder/
βββ docker-compose.yml # Container orchestration
βββ start.bat / start.sh # Startup scripts
βββ data/ # Data directories (mounted to GLOWPA)
β βββ input/ # Place input files here
β βββ output/ # Model results appear here
β βββ config/ # Configuration files
β βββ README.md # Data directory documentation
βββ webapp/
βββ Dockerfile # Web application container
βββ requirements.txt # Python dependencies
βββ start.py # Container startup script
βββ backend/
β βββ app.py # Flask backend
βββ frontend/
βββ package.json # React dependencies
βββ public/
β βββ index.html # HTML template
βββ src/
βββ index.js # React entry point
βββ App.js # Main React component
βββ index.css # Styling
The Flask backend is located in webapp/backend/app.py. It provides:
- Health check endpoint (
/api/health) - GLOWPA status check (
/api/glowpa-status) - Sample data endpoint (
/api/data)
The React frontend is in webapp/frontend/. Features:
- Modern, responsive UI
- Real-time status monitoring
- Integration with backend API
- Beautiful gradient design
- Backend: Add new routes in
webapp/backend/app.py - Frontend: Modify
webapp/frontend/src/App.js - Dependencies:
- Python: Add to
webapp/requirements.txt - Node.js: Add to
webapp/frontend/package.json
- Python: Add to
- Image:
docker-registry.wur.nl/glowpa/glowpa-r/glowpa-main:0.2.1 - Port: 8080
- Purpose: GLOWPA-R application service
- Volumes:
./data/inputβ/app/input(Input files)./data/outputβ/app/output(Output files)./data/configβ/app/config(Configuration files)
- Build: Custom Dockerfile with Python Flask + React
- Ports: 3000 (frontend), 5000 (backend)
- Purpose: Main web interface and API
If you see "Docker is not running", ensure Docker Desktop is started.
If ports 3000, 5000, or 8080 are in use:
- Stop the conflicting applications
- Or modify ports in
docker-compose.yml
Force rebuild with:
docker-compose up --build --force-recreatedocker-compose logs -fEdit docker-compose.yml to change port mappings:
ports:
- "NEW_PORT:CONTAINER_PORT"Add environment variables in docker-compose.yml:
environment:
- CUSTOM_VAR=value- Place your input files in the
data/input/directory - Supported formats: CSV, GeoTIFF, Shapefiles, etc.
- Files are automatically available to the GLOWPA container at
/app/input
- The GLOWPA model writes results to
data/output/ - Files include CSV results, TIFF outputs, and log files
- Data persists on your local system after containers stop
- Place configuration files in
data/config/ - Include model parameters, processing settings, etc.
- Files are accessible to GLOWPA at
/app/config
GET /api/health- Backend health checkGET /api/glowpa-status- GLOWPA container statusGET /api/data- Sample data (for testing)
- Fork the repository
- Create a feature branch
- Make your changes
- Test with Docker
- Submit a pull request
This project is open source. Please check with your organization for specific licensing requirements.
Happy coding! π