205 lines
4.3 KiB
Markdown
205 lines
4.3 KiB
Markdown
# Running with Docker Compose
|
|
|
|
This project includes Docker and Docker Compose configuration for easy deployment.
|
|
|
|
## Prerequisites
|
|
|
|
- Docker installed
|
|
- Docker Compose installed
|
|
|
|
## Quick Start
|
|
|
|
### 1. Copy Environment File
|
|
|
|
```bash
|
|
copy .env.example .env
|
|
```
|
|
|
|
### 2. Edit .env
|
|
|
|
Open `.env` and fill in your Reddit credentials:
|
|
|
|
```env
|
|
REDDIT_CLIENT_ID=your_client_id
|
|
REDDIT_CLIENT_SECRET=your_client_secret
|
|
REDDIT_USERNAME=your_username
|
|
REDDIT_PASSWORD=your_password
|
|
SUBREDDIT=your_subreddit
|
|
```
|
|
|
|
### 3. (Optional) Set Up Wiki Configuration
|
|
|
|
Create a wiki page on your subreddit named `minecraft_update_bot` with your post templates in YAML format. This allows different posts for releases, snapshots, etc.
|
|
|
|
See [WIKI_CONFIG.md](WIKI_CONFIG.md) for detailed instructions and examples.
|
|
|
|
### 4. Start the Bot
|
|
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
This will:
|
|
- Build the Docker image
|
|
- Start the bot in a container
|
|
- Persist data in a Docker volume named `minecraft-bot-db`
|
|
- Auto-restart the container if it crashes
|
|
|
|
### 5. View Logs
|
|
|
|
```bash
|
|
# Watch logs in real-time
|
|
docker-compose logs -f
|
|
|
|
# Or check status
|
|
docker-compose ps
|
|
```
|
|
|
|
### 5. Stop the Bot
|
|
|
|
```bash
|
|
docker-compose down
|
|
```
|
|
|
|
## Configuration
|
|
|
|
All configuration is done via the `.env` file. The following variables are available:
|
|
|
|
| Variable | Required | Default | Description |
|
|
|----------|----------|---------|-------------|
|
|
| `REDDIT_CLIENT_ID` | ✓ | - | Your Reddit app client ID |
|
|
| `REDDIT_CLIENT_SECRET` | ✓ | - | Your Reddit app secret |
|
|
| `REDDIT_USERNAME` | ✓ | - | Your Reddit username |
|
|
| `REDDIT_PASSWORD` | ✓ | - | Your Reddit password |
|
|
| `SUBREDDIT` | ✓ | - | Subreddit to post to |
|
|
| `RELEASE_TYPES` | | `release` | Comma-separated: `release,snapshot` |
|
|
| `CHECK_INTERVAL` | | `3600` | Seconds between checks |
|
|
| `REDDIT_USER_AGENT` | | `MinecraftUpdateBot/1.0` | API user agent |
|
|
|
|
### Examples
|
|
|
|
**Check for both releases and snapshots:**
|
|
```env
|
|
RELEASE_TYPES=release,snapshot
|
|
```
|
|
|
|
**Check every 10 minutes (for testing):**
|
|
```env
|
|
CHECK_INTERVAL=600
|
|
```
|
|
|
|
## Data Persistence
|
|
|
|
The bot's database (list of posted versions) is stored in a Docker volume called `minecraft-bot-db`. This persists between container restarts.
|
|
|
|
To view the data:
|
|
```bash
|
|
docker volume inspect minecraft-bot-db
|
|
```
|
|
|
|
To reset the database (post all versions again):
|
|
```bash
|
|
docker volume rm minecraft-bot-db
|
|
```
|
|
|
|
## Building
|
|
|
|
To rebuild the image after code changes:
|
|
|
|
```bash
|
|
docker-compose build --no-cache
|
|
docker-compose up -d
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Container won't start
|
|
|
|
```bash
|
|
docker-compose logs
|
|
```
|
|
|
|
Check for configuration errors or missing credentials.
|
|
|
|
### Reddit authentication error
|
|
|
|
- Verify your credentials in `.env`
|
|
- Check that your Reddit app still exists at https://www.reddit.com/prefs/apps
|
|
- Make sure your account can post to the subreddit
|
|
|
|
### No posts being made
|
|
|
|
- Check the logs: `docker-compose logs -f`
|
|
- Verify the subreddit name in `.env`
|
|
- Check `docker exec minecraft-bot cat /app/DB/posted_versions.json` to see what's been posted
|
|
|
|
## Advanced Options
|
|
|
|
### Custom Post Template
|
|
|
|
Mount your config file to customize the post format:
|
|
|
|
Edit `docker-compose.yml`:
|
|
```yaml
|
|
volumes:
|
|
- minecraft-bot-db:/app/DB
|
|
- ./config.py:/app/config.py # Uncomment this line
|
|
```
|
|
|
|
Then edit `config.py` locally to customize `POST_TEMPLATE`.
|
|
|
|
### Resource Limits
|
|
|
|
Uncomment and adjust in `docker-compose.yml`:
|
|
```yaml
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.5'
|
|
memory: 256M
|
|
```
|
|
|
|
### Running Multiple Instances
|
|
|
|
Create separate directories with different `.env` files and run:
|
|
```bash
|
|
docker-compose -p instance1 up -d
|
|
docker-compose -p instance2 up -d
|
|
```
|
|
|
|
## Getting Reddit Credentials
|
|
|
|
1. Go to https://www.reddit.com/prefs/apps
|
|
2. Click "Create an app" or "Create another app"
|
|
3. Choose "Script" application type
|
|
4. Fill in the form:
|
|
- **Name:** MinecraftUpdateBot
|
|
- **Redirect URI:** http://localhost:8080
|
|
5. Copy Client ID and Client Secret from the app page
|
|
6. Use your Reddit username and password
|
|
|
|
## Docker Commands Reference
|
|
|
|
```bash
|
|
# Start the bot
|
|
docker-compose up -d
|
|
|
|
# Stop the bot
|
|
docker-compose down
|
|
|
|
# Restart the bot
|
|
docker-compose restart
|
|
|
|
# View logs
|
|
docker-compose logs -f
|
|
|
|
# Check status
|
|
docker-compose ps
|
|
|
|
# Execute a command in the container
|
|
docker exec minecraft-bot python test_setup.py
|
|
|
|
# Remove everything (including volumes)
|
|
docker-compose down -v
|
|
```
|