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
- [Docker](https://docs.docker.com/get-docker/) installed on your system
- [Docker Compose](https://docs.docker.com/compose/install/) (usually included with Docker Desktop)
## Quick Start
1. **Create a .env file** (optional)
Copy the example environment file if you want to customize settings:
```bash
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**
```bash
# 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:
```bash
make docker-logs
```
Press Ctrl+C to stop viewing logs.
5. **Stop the application**
```bash
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**
```bash
docker build -t folio:latest .
```
2. **Run the Docker container**
```bash
docker run -p 8050:8050 --env-file .env folio:latest
```
3. **Use Docker Compose directly**
```bash
# 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:
```bash
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