mirror of
https://github.com/mwisnowski/mtg_python_deckbuilder.git
synced 2025-09-21 20:40:47 +02:00
2.2 KiB
2.2 KiB
Docker Guide (concise)
Run the MTG Deckbuilder in Docker with persistent volumes and optional headless mode.
Quick start
PowerShell (recommended)
docker compose build
docker compose run --rm mtg-deckbuilder
From Docker Hub (PowerShell)
docker run -it --rm `
-v "${PWD}/deck_files:/app/deck_files" `
-v "${PWD}/logs:/app/logs" `
-v "${PWD}/csv_files:/app/csv_files" `
-v "${PWD}/owned_cards:/app/owned_cards" `
-v "${PWD}/config:/app/config" `
mwisnowski/mtg-python-deckbuilder:latest
Volumes
/app/deck_files
↔./deck_files
/app/logs
↔./logs
/app/csv_files
↔./csv_files
/app/owned_cards
↔./owned_cards
(owned cards lists: .txt/.csv)- Optional:
/app/config
↔./config
(JSON configs for headless)
Interactive vs headless
- Interactive: attach a TTY (compose run or
docker run -it
) - Headless auto-run:
docker compose run --rm -e DECK_MODE=headless mtg-deckbuilder
- Headless with JSON config:
docker compose run --rm ` -e DECK_MODE=headless ` -e DECK_CONFIG=/app/config/deck.json ` mtg-deckbuilder
Common env vars
- DECK_MODE=headless
- DECK_CONFIG=/app/config/deck.json
- DECK_COMMANDER, DECK_PRIMARY_CHOICE
- DECK_ADD_LANDS, DECK_FETCH_COUNT
Manual build/run
docker build -t mtg-deckbuilder .
docker run -it --rm `
-v "${PWD}/deck_files:/app/deck_files" `
-v "${PWD}/logs:/app/logs" `
-v "${PWD}/csv_files:/app/csv_files" `
-v "${PWD}/owned_cards:/app/owned_cards" `
-v "${PWD}/config:/app/config" `
mtg-deckbuilder
## Troubleshooting
- No prompts? Use `docker compose run --rm` (not `up`) or add `-it` to `docker run`
- Files not saving? Verify volume mounts and that folders exist
- Headless not picking config? Ensure `./config` is mounted to `/app/config` and `DECK_CONFIG` points to a JSON file
- Owned-cards prompt not seeing files? Ensure `./owned_cards` is mounted to `/app/owned_cards`
Tips
- Use
docker compose run
, notup
, for interactive mode - Exported decks appear in
deck_files/
- JSON run-config is exported only in interactive runs; headless skips it