feat: bake similarity cache into Docker images

- Copy card_files/ to /.defaults/card_files/ during build
- Entrypoint checks for baked-in cache before downloading
- Fallback to GitHub download if not present in image
- Reduces startup time and bandwidth usage
This commit is contained in:
matt 2025-10-17 17:29:17 -07:00
parent 0cf7598400
commit fd240e2533
2 changed files with 18 additions and 4 deletions

View file

@ -32,6 +32,12 @@ COPY config/ ./config/
COPY config/ /.defaults/config/
RUN mkdir -p owned_cards
# Copy similarity cache if available (pre-built during CI)
# Store in /.defaults/card_files so it persists after volume mount
RUN mkdir -p /.defaults/card_files
# Copy entire card_files directory (will include cache if present, empty if not)
COPY card_files/ /.defaults/card_files/
# Create necessary directories as mount points
RUN mkdir -p deck_files logs csv_files card_files config /.defaults

View file

@ -6,12 +6,20 @@ seed_defaults() {
# Ensure base config and data directories exist
mkdir -p /app/config /app/config/card_lists /app/config/themes /app/card_files
# Download pre-built similarity cache from GitHub if not present
# Copy pre-built similarity cache from image defaults if available, otherwise download
if [ ! -f /app/card_files/similarity_cache.parquet ]; then
# First try to copy from baked-in defaults (included in Docker image during CI builds)
if [ -f /.defaults/card_files/similarity_cache.parquet ]; then
echo "Copying pre-built similarity cache from image..."
cp /.defaults/card_files/similarity_cache.parquet /app/card_files/ 2>/dev/null || true
cp /.defaults/card_files/similarity_cache_metadata.json /app/card_files/ 2>/dev/null || true
else
# Fallback: download from GitHub similarity-cache-data branch
echo "Downloading similarity cache from GitHub..."
wget -q https://raw.githubusercontent.com/mwisnowski/mtg_python_deckbuilder/similarity-cache-data/card_files/similarity_cache.parquet -O /app/card_files/similarity_cache.parquet 2>/dev/null || echo "Warning: Could not download similarity cache"
wget -q https://raw.githubusercontent.com/mwisnowski/mtg_python_deckbuilder/similarity-cache-data/card_files/similarity_cache_metadata.json -O /app/card_files/similarity_cache_metadata.json 2>/dev/null || true
fi
fi
# Copy from baked-in defaults if targets are missing
if [ -d "/.defaults/config" ]; then