services:
redis:
image: redis:7-alpine
platform: linux/arm64
container_name: daoliyu-redis-sqlite-arm
restart: unless-stopped
command: ["redis-server", "--ignore-warnings", "ARM64-COW-BUG", "--save", "900", "1", "--appendonly", "yes"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
backend:
image: msmkls/daoliyu-backend-sqlite:arm-0.2.0
platform: linux/arm64
build:
context: ./backend
dockerfile: Dockerfile
args:
PRISMA_SCHEMA: "${PRISMA_SCHEMA-prisma/schema.sqlite.prisma}"
container_name: daoliyu-backend-sqlite-arm
restart: unless-stopped
depends_on:
redis:
condition: service_healthy
environment:
NODE_ENV: production
DATABASE_URL: "file:/app/backend-data/dev.db"
SQLITE_DATABASE_URL: "file:/app/backend-data/dev.db"
PRISMA_SCHEMA: "${PRISMA_SCHEMA-prisma/schema.sqlite.prisma}"
APP_PORT: 4000
LIBRARY_ROOT: "/data/media"
AUDIOBOOK_LIBRARY_ROOT: "/data/audiobooks"
VIDEO_LIBRARY_ROOT: "/data/music-videos"
VIDEO_TRANSCODE_CACHE: "/app/storage/transcoded/videos"
VIDEO_THUMBNAIL_CACHE: "/app/storage/thumbnails/videos"
PLAYLISTS_IMPORT_ROOT: "/data/playlists"
REGISTRATION_OPEN: "${REGISTRATION_OPEN:-true}"
PLUGINS_DIR: "/plugins"
REDIS_URL: "redis://redis:6379/0"
LOG_LEVEL: "${LOG_LEVEL:-info}"
DEBUG: "${DEBUG:-true}"
volumes:
- ./backend-storage:/app/storage
- ./backend-data:/app/backend-data
- ./media:/data/media
- ./audiobooks:/data/audiobooks
- ./music-videos:/data/music-videos
- ./playlists:/data/playlists
- ./plugins:/plugins
command: >
sh -c "
PRISMA_SCHEMA=prisma/schema.sqlite.prisma &&
npx prisma generate --schema $PRISMA_SCHEMA &&
npx prisma db push --schema $PRISMA_SCHEMA --skip-generate --accept-data-loss &&
node scripts/manage-system-version.js post || true &&
node dist/index.js
"
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:4000/health"]
interval: 30s
timeout: 5s
retries: 5
frontend:
image: msmkls/daoliyu-frontend-sqlite:arm-0.2.0
platform: linux/arm64
build:
context: ./frontend
dockerfile: Dockerfile
container_name: daoliyu-frontend-sqlite-arm
restart: unless-stopped
depends_on:
backend:
condition: service_healthy
ports:
- "5173:8080"