folio / DOCKER.md
dystomachina's picture
refactor(data-fetcher): simplify data fetcher to use only YFinance
203d1e9

Docker Setup for Folio

This document provides instructions for running the Folio application using Docker.

Prerequisites

Quick Start

  1. Create a .env file (optional)

    Copy the example environment file if you want to customize settings:

    cp .env.example .env
    # Edit .env to customize settings if needed
    

    Note: Since we're using yfinance as the default data source, no API keys are required.

  2. Build and run with Docker Compose

    # Build and start the container in detached mode
    make docker-up
    

    After successful startup, you'll see a message with the URL where you can access the application.

  3. Access the application

    Open your browser and navigate to:

    http://localhost:8050
    
  4. View logs

    To monitor the application logs in real-time:

    make docker-logs
    

    Press Ctrl+C to stop viewing logs.

  5. Stop the application

    make docker-down
    

Docker Commands Reference

The following Make commands are available for working with Docker:

Command Description
make docker-build Build the Docker image
make docker-run Run the Docker container
make docker-up Start the application with docker-compose
make docker-down Stop the docker-compose services
make docker-logs Tail the Docker logs
make docker-test Run tests in a Docker container

Manual Docker Commands

If you prefer to use Docker directly without Make:

  1. Build the Docker image

    docker build -t folio:latest .
    
  2. Run the Docker container

    docker run -p 8050:8050 --env-file .env folio:latest
    
  3. Use Docker Compose directly

    # Start services
    docker-compose up -d
    
    # View logs
    docker-compose logs -f
    
    # Stop services
    docker-compose down
    

Troubleshooting

  • Port conflicts: If port 8050 is already in use, modify the PORT environment variable in your .env file and update the port mapping in docker-compose.yml.

  • Data source: The application uses yfinance as the data source for stock data.

  • Volume mounting: If you're making changes to the code and want to see them reflected immediately, ensure the volumes in docker-compose.yml are correctly mapping your local directories.

  • Dependencies: The Docker image uses requirements.txt for its dependencies. If you need to add or update dependencies, modify this file instead of editing the Dockerfile directly.

  • Development dependencies: For development and testing, the Docker image can also install dependencies from requirements-dev.txt. These are installed automatically when running make docker-test.

  • API Keys: Sensitive data like API keys should be passed at runtime using environment variables or the .env file, not hardcoded in the Dockerfile.

Testing in Docker

To run tests in a Docker container:

make docker-test

This will build a Docker image with development dependencies and run the test suite inside the container.

Next Steps

After successfully running the application locally with Docker, you can consider:

  1. Setting up CI/CD with GitHub Actions
  2. Deploying to a hosting platform like Hugging Face Spaces
  3. Implementing additional Docker configurations for production environments