dockerize

This commit is contained in:
Lord Of Nougate 2025-05-25 16:26:58 +02:00
parent 1748432ddb
commit 4281aafc61
5 changed files with 227 additions and 1 deletions

50
.dockerignore Normal file
View File

@ -0,0 +1,50 @@
# Docker ignore file for discord-jellyseerr
# Python virtual environment
.venv/
venv/
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
# IDE files
.idea/
.vscode/
*.swp
*.swo
# Logs
logs/
*.log
# Git files
.git/
.gitignore
# Docker files
.dockerignore
# Environment variables
# Don't ignore .env since we need it to run the bot
# but make sure not to commit it to version control
# OS specific
.DS_Store
Thumbs.db

97
DOCKER.md Normal file
View File

@ -0,0 +1,97 @@
# Docker Deployment for Discord-Jellyseerr Bot
This document contains instructions for deploying the Discord-Jellyseerr Bot using Docker.
## Prerequisites
- Docker installed on your host machine
- Docker Compose installed on your host machine
- A valid Discord bot token
- Access to a Jellyseerr instance
## Deployment Steps
### 1. Configure Environment Variables
Make sure your `.env` file is properly configured with the following variables:
```
# Discord Bot Token (required)
DISCORD_BOT_TOKEN=your_discord_bot_token_here
# Bot command prefix (default is !)
BOT_PREFIX=!
# Jellyseerr Configuration (required)
JELLYSEERR_URL=http://your-jellyseerr-instance:5055
JELLYSEERR_EMAIL=your_jellyseerr_email@example.com
JELLYSEERR_PASSWORD=your_jellyseerr_password
# Notification Settings
# Set to 'true' to enable notifications for these events
NOTIFY_REQUEST_APPROVED=true
NOTIFY_REQUEST_DECLINED=true
NOTIFY_MEDIA_AVAILABLE=true
# Notification Channel ID (leave empty to disable notifications)
NOTIFICATION_CHANNEL_ID=your_channel_id_here
# UI Settings
EMBED_COLOR=0x3498db
```
### 2. Build and Deploy with Docker Compose
Run the following command in the project directory to build and start the bot:
```bash
docker-compose up -d
```
This will:
- Build the Docker image for the bot
- Start the container in detached mode
- Mount the project directory to the container
- Mount the logs directory for persistent logs
### 3. View Logs
You can view the logs of the running container with:
```bash
docker-compose logs -f
```
### 4. Stop the Bot
To stop the bot, run:
```bash
docker-compose down
```
### 5. Update the Bot
To update the bot after making changes to the code:
```bash
docker-compose build
docker-compose up -d
```
## Persistent Data
The Docker setup mounts the following directories for persistent data:
- The entire project directory for easy updates
- The logs directory to retain log files
## Troubleshooting
If you encounter issues:
1. Check the logs using `docker-compose logs -f`
2. Verify your `.env` file has the correct credentials
3. Ensure your Discord bot token is valid
4. Confirm you can access your Jellyseerr instance from the Docker host
For authentication issues, verify that the Jellyseerr user account has the necessary permissions and that local authentication is enabled in Jellyseerr.

22
Dockerfile Normal file
View File

@ -0,0 +1,22 @@
FROM python:3.10-slim
# Set working directory
WORKDIR /app
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PYTHONFAULTHANDLER=1
# Install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy application code
COPY . .
# Create logs directory
RUN mkdir -p logs && chmod 777 logs
# Run the bot
CMD ["python", "main.py"]

View File

@ -12,6 +12,8 @@ This Discord bot integrates with Jellyseerr to provide commands for searching, r
## Installation
### Standard Installation
1. Clone this repository:
```
git clone https://github.com/yourusername/discord-jellyseerr.git
@ -46,11 +48,33 @@ This Discord bot integrates with Jellyseerr to provide commands for searching, r
./run.sh
```
### Docker Installation
1. Clone this repository:
```
git clone https://github.com/yourusername/discord-jellyseerr.git
cd discord-jellyseerr
```
2. Copy the `.env.example` file to `.env` and edit it with your configuration:
```
cp .env.example .env
```
3. Edit the `.env` file with your Discord bot token and Jellyseerr API details as shown above.
4. Build and run using Docker Compose:
```
docker compose up -d
```
For more detailed Docker deployment instructions, see [DOCKER.md](DOCKER.md).
## Setting up the Discord Bot
1. Go to the [Discord Developer Portal](https://discord.com/developers/applications)
2. Create a new application and set up a bot
4. Enable the following Privileged Gateway Intents:
3. Enable the following Privileged Gateway Intents:
- MESSAGE CONTENT INTENT
4. Invite the bot to your server with the following permissions:
- Send Messages
@ -101,6 +125,17 @@ This bot does not handle notifications, as the native webhook integration provid
Contributions are welcome! Please feel free to submit a Pull Request.
## Deployment Options
### Standard Deployment
Run the bot directly on your system with Python. This is simple for testing but requires you to manage dependencies and keep the process running.
### Docker Deployment
Deploy the bot as a Docker container for better isolation and easier management. The Docker setup includes:
- Containerized environment with all dependencies
- Volume mounting for persistent logs
- Automatic restarts if the bot crashes
## License
This project is licensed under the MIT License - see the LICENSE file for details.

22
docker-compose.yml Normal file
View File

@ -0,0 +1,22 @@
version: '3.8'
services:
discord-jellyseerr:
build:
context: .
dockerfile: Dockerfile
container_name: discord-jellyseerr
restart: unless-stopped
volumes:
- ./:/app
- ./logs:/app/logs
environment:
- TZ=UTC
env_file:
- .env
networks:
- discord-jellyseerr-network
networks:
discord-jellyseerr-network:
driver: bridge