version: "3.8" services: akaunting: image: docker.io/akaunting/akaunting:latest restart: unless-stopped depends_on: akaunting-db: condition: service_healthy environment: # App config APP_URL: ${APP_URL} LOCALE: ${LOCALE} # Database connection DB_HOST: akaunting-db DB_PORT: 3306 DB_NAME: ${DB_NAME} DB_USERNAME: ${DB_USERNAME} DB_PASSWORD: ${DB_PASSWORD} DB_PREFIX: ${DB_PREFIX} # First-run bootstrap (company + admin) COMPANY_NAME: ${COMPANY_NAME} COMPANY_EMAIL: ${COMPANY_EMAIL} ADMIN_EMAIL: ${ADMIN_EMAIL} ADMIN_PASSWORD: ${ADMIN_PASSWORD} # Expose only to internal network; domain routing handled by Dokploy/Traefik expose: - "80" volumes: - akaunting-data:/var/www/html akaunting-db: image: mariadb:10.11 restart: unless-stopped environment: MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} # Randomizes root password on each deployment (recommended) MYSQL_RANDOM_ROOT_PASSWORD: "yes" volumes: - akaunting-db:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 volumes: akaunting-data: {} akaunting-db: {}