services: postgres: image: postgres:13 environment: POSTGRES_DB: ${DB_NAME} POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASSWORD} ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data # Using Docker's volume instead of bind mount streamlit: build: context: . dockerfile: Dockerfile ports: - "8501:8501" depends_on: - postgres environment: - DB_NAME=${DB_NAME} - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} - DB_HOST=postgres - DB_PORT=5432 - GROQ_API_KEY=${GROQ_API_KEY} - MISTRAL_API_KEY=${MISTRAL_API_KEY} - DATA_PATH=/app/dataset/data.csv volumes: - ./dataset:/app/dataset grafana: image: grafana/grafana:latest ports: - "3000:3000" depends_on: - postgres environment: - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD} - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource volumes: - grafana-storage:/var/lib/grafana volumes: pgdata: # This is now a Docker-managed volume grafana-storage: driver: local