Files
myDrive/docker-compose.yml
T
oxmc ecc340e7b1
Release Please / release-please (push) Has been cancelled
Docker Build and Push (Development) / build-and-push-dev (push) Has been cancelled
feat: add dark mode UI and SQLite as alternate database backend
Dark mode: CSS custom properties + .dark class toggled via Redux/localStorage,
with a theme toggle in the Header and Settings page. Foundation didn't exist
yet despite prior assumption, so it was built from scratch.

SQLite: new DB_ENGINE=mongo|sqlite env var selects the metadata backend at
runtime (Mongo stays default, no behavior change unless opted in). File/thumbnail
bytes continue to use the existing fs/S3 storage path. Implemented via a shared
DB interface (dbTypes.ts) with parallel mongoDB/ and sqliteDB/ implementations,
selected through dbFactory.ts, with JWT/encryption logic extracted into
userCrypto.ts so both engines share it.
2026-07-05 04:18:33 -07:00

52 lines
1.7 KiB
YAML

services:
app:
container_name: mydrive
image: kylehoell/mydrive:latest
volumes:
# Use the following volumes section if you want to use bind mounts:
# - /path/to/data:/data/
# - /path/to/temp:/temp/
# Use the following volumes section if you want to use named volumes:
- mydrive-data:/data/
- mydrive-temp:/temp/
ports:
- "${HTTP_PORT:-3000}:3000"
# Optional: Uncomment the following line if you want to use HTTPS
#- "${HTTPS_PORT:-8080}:8080"
# Use expose: if using a reverse proxy
# expose:
# - 3000
# - 8080
env_file:
- .env # Copy .env.example to .env and fill in the values
# Only needed when DB_ENGINE=mongo (the default) in your .env file.
# If DB_ENGINE=sqlite, this service is unused and can be removed -
# metadata is instead stored in an embedded SQLite file under the
# mydrive-data volume (SQLITE_DB_PATH), so no separate database service is required.
mongo:
image: mongo:8
container_name: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: username
MONGO_INITDB_ROOT_PASSWORD: password
expose:
- 27017
volumes:
- db-data:/data/db
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
timeout: 10s
interval: 10s
retries: 10
start_period: 10s
# Use the following volumes section if you want to use named volumes.
volumes:
mydrive-data:
mydrive-temp:
db-data: