# Kanesh with Docker Compose. # SQLite (default): docker compose up -d # PostgreSQL: docker compose --profile postgres up -d (set DATABASE_DRIVER=postgres in .env) # MySQL: docker compose --profile mysql up -d (set DATABASE_DRIVER=mysql in .env) services: kanesh: image: ${KANESH_IMAGE:-ghcr.io/kaneshdev/kanesh:latest} container_name: kanesh restart: unless-stopped env_file: .env environment: HOST: 0.0.0.0 PORT: 8080 DATA_DIR: /data ports: - "127.0.0.1:${PUBLISH_PORT:-8080}:8080" volumes: - kanesh-data:/data postgres: image: postgres:17-alpine profiles: [postgres] restart: unless-stopped environment: POSTGRES_USER: kanesh POSTGRES_DB: kanesh POSTGRES_PASSWORD: ${DB_PASSWORD:?set DB_PASSWORD in .env} volumes: - kanesh-postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U kanesh"] interval: 5s retries: 10 mysql: image: mysql:8.4 profiles: [mysql] restart: unless-stopped environment: MYSQL_USER: kanesh MYSQL_DATABASE: kanesh MYSQL_PASSWORD: ${DB_PASSWORD:?set DB_PASSWORD in .env} MYSQL_RANDOM_ROOT_PASSWORD: "yes" volumes: - kanesh-mysql:/var/lib/mysql volumes: kanesh-data: kanesh-postgres: kanesh-mysql: