# Docker Setup for Podcastrr This document explains how to run Podcastrr using Docker and Docker Compose. ## Prerequisites - [Docker](https://docs.docker.com/get-docker/) - [Docker Compose](https://docs.docker.com/compose/install/) ## Quick Start 1. Clone the repository: ``` git clone https://github.com/yourusername/podcastrr.git cd podcastrr ``` 2. Start the application using Docker Compose: ``` docker-compose up -d ``` 3. Access the application at http://localhost:5000 ## Configuration The application is configured using environment variables in the `docker-compose.yml` file. You can modify these variables to customize the application: - `FLASK_ENV`: Set to `development` for development mode or `production` for production mode - `SECRET_KEY`: A secret key for securing the Flask application (change this to a secure random string) - `DATABASE_URI`: The URI for the SQLite database - `DOWNLOAD_PATH`: The path where podcast episodes will be downloaded - `LOG_LEVEL`: The logging level (INFO, DEBUG, WARNING, ERROR, CRITICAL) ## Persistent Data The Docker Compose configuration creates two volumes for persistent data: 1. `./downloads:/app/downloads`: Stores downloaded podcast episodes 2. `./instance:/app/instance`: Stores the SQLite database These directories will be created in your project folder and will persist data between container restarts. ## Building the Docker Image If you've made changes to the application code and want to rebuild the Docker image: ``` docker-compose build ``` ## Stopping the Application To stop the application: ``` docker-compose down ``` ## Viewing Logs To view the application logs: ``` docker-compose logs -f ``` ## Troubleshooting ### Database Issues If you encounter database issues, you can try: 1. Stopping the application: ``` docker-compose down ``` 2. Removing the instance directory: ``` rm -rf instance ``` 3. Starting the application again: ``` docker-compose up -d ``` This will recreate the database from scratch. ### Permission Issues If you encounter permission issues with the downloads or instance directories, ensure that they are writable by the Docker container: ``` chmod -R 777 downloads instance ``` Note: This is not recommended for production environments. Instead, configure proper user permissions.