services: mysql: image: mysql:8.0 container_name: dolibarr-mysql environment: MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD:-rootpassword}" MYSQL_DATABASE: "dolibarr" MYSQL_USER: "dolibarr" MYSQL_PASSWORD: "${MYSQL_PASSWORD:-12345678}" ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-prootpassword"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped dolibarr: image: dolibarr/dolibarr:latest container_name: dolibarr-web depends_on: mysql: condition: service_healthy environment: DOLI_DB_TYPE: "mysqli" DOLI_DB_HOST: "mysql" DOLI_DB_HOST_PORT: "3306" DOLI_DB_USER: "dolibarr" DOLI_DB_PASSWORD: "${MYSQL_PASSWORD:-12345678}" DOLI_DB_NAME: "dolibarr" DOLI_ADMIN_LOGIN: "admin" DOLI_ADMIN_PASSWORD: "${DOLI_ADMIN_PASSWORD:-12345678}" DOLI_URL_ROOT: "http://localhost" ports: - "80:80" volumes: - dolibarr_documents:/var/www/documents - dolibarr_custom:/var/www/html/custom healthcheck: test: ["CMD-SHELL", "curl -f http://localhost/ || exit 1"] interval: 15s timeout: 5s retries: 10 start_period: 30s restart: unless-stopped dolimiddlewareapi: image: dolimiddlewareapi build: context: . dockerfile: DoliMiddlewareApi/Dockerfile container_name: dolibarr-middleware-api depends_on: dolibarr: condition: service_healthy ports: - "5001:8080" environment: - ASPNETCORE_ENVIRONMENT=Production - Jwt__Secret=DevDemoSecretKeyForDockerCompose2026Min32Chars!! - Dolibarr__ApiUrl=http://dolibarr/api/index.php volumes: - bff_data:/app/data restart: unless-stopped volumes: mysql_data: dolibarr_documents: dolibarr_custom: bff_data: