services: app: build: . environment: APP_ENV: ${APP_ENV:-development} APP_KEY: ${APP_KEY:?Set APP_KEY in .env} ADMIN_EMAIL: ${ADMIN_EMAIL:?Set ADMIN_EMAIL in .env} ADMIN_PASSWORD: ${ADMIN_PASSWORD:?Set ADMIN_PASSWORD in .env} DB_HOST: db DB_PORT: 3306 DB_DATABASE: jobcard DB_USERNAME: jobcard DB_PASSWORD: ${DB_PASSWORD:?Set DB_PASSWORD in .env} volumes: - ./public:/var/www/html/public - ./app:/var/www/html/app - ./database:/var/www/html/database - ./config:/var/www/html/config depends_on: db: condition: service_healthy networks: [jobcard] web: image: nginx:1.27-alpine ports: - "8082:80" volumes: - ./public:/var/www/html/public:ro - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro depends_on: [app] networks: [jobcard] db: image: mariadb:11.4 environment: MARIADB_DATABASE: jobcard MARIADB_USER: jobcard MARIADB_PASSWORD: ${DB_PASSWORD:?Set DB_PASSWORD in .env} MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:?Set DB_ROOT_PASSWORD in .env} volumes: - db-data:/var/lib/mysql - ./database/schema.sql:/docker-entrypoint-initdb.d/001-schema.sql:ro healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 5s timeout: 5s retries: 20 networks: [jobcard] volumes: db-data: networks: jobcard: