services: nginx: image: nginx:alpine container_name: nomina_nginx ports: - "${APP_PORT:-80}:80" volumes: - ./public:/var/www/html/public:ro - ./docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - app networks: - app_network restart: unless-stopped healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://localhost"] interval: 30s timeout: 10s retries: 3 deploy: resources: limits: cpus: '0.5' memory: 256M app: build: context: . dockerfile: Dockerfile args: PUID: ${PUID:-1000} PGID: ${PGID:-1000} container_name: nomina_app environment: - APP_ENV=${APP_ENV:-production} - APP_DEBUG=${APP_DEBUG:-false} - APP_KEY=${APP_KEY} - APP_URL=${APP_URL:-http://localhost} - DB_CONNECTION=${DB_CONNECTION:-mysql} - DB_HOST=${DB_HOST:-db} - DB_PORT=${DB_PORT:-3306} - DB_DATABASE=${DB_DATABASE:-nomina_ventas} - DB_USERNAME=${DB_USERNAME} - DB_PASSWORD=${DB_PASSWORD} - SESSION_DRIVER=${SESSION_DRIVER:-database} - CACHE_STORE=${CACHE_STORE:-database} - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN} - TELEGRAM_WEBHOOK_URL=${TELEGRAM_WEBHOOK_URL} volumes: - ./:/var/www/html:delegated - storage_data:/var/www/html/storage depends_on: db: condition: service_healthy networks: - app_network restart: unless-stopped deploy: resources: limits: cpus: '1.0' memory: 512M db: image: mysql:8.0 container_name: nomina_mysql environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE=${DB_DATABASE:-nomina_ventas} - MYSQL_USER=${DB_USERNAME} - MYSQL_PASSWORD=${DB_PASSWORD} volumes: - mysql_data:/var/lib/mysql networks: - app_network restart: unless-stopped healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 start_period: 30s deploy: resources: limits: cpus: '1.0' memory: 1G networks: app_network: driver: bridge volumes: mysql_data: storage_data: