x-logging: &default-logging options: max-size: "10m" max-file: "3" driver: json-file services: app: build: context: . image: invoiceninja/invoiceninja-debian:${TAG:-latest} restart: unless-stopped env_file: - ./.env volumes: - ./.env:/var/www/html/.env:ro - ./php/php.ini:/usr/local/etc/php/conf.d/zzz-php.ini:ro - ./php/php-fpm.conf:/usr/local/etc/php-fpm.d/zzz-php-fpm.conf:ro - ./supervisor/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf:ro - app_storage:/var/www/html/storage - app_cache:/var/www/html/bootstrap/cache - image_public:/var/www/html/public:ro networks: - app-network depends_on: mysql: condition: service_healthy redis: condition: service_healthy logging: *default-logging nginx: image: nginx:alpine restart: unless-stopped ports: - "80:80" volumes: - ./nginx:/etc/nginx/nginx.conf.d:ro - app_storage:/var/www/html/storage:ro - image_public:/var/www/html/public:ro networks: - app-network depends_on: - app logging: *default-logging mysql: image: mysql:8.0 restart: unless-stopped env_file: - ./.env environment: MYSQL_DATABASE: ${DB_DATABASE} MYSQL_USER: ${DB_USERNAME} MYSQL_PASSWORD: ${DB_PASSWORD} MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} volumes: - mysql_data:/var/lib/mysql networks: - app-network healthcheck: test: [ "CMD", "mysqladmin", "ping", "-h", "localhost", "-u${MYSQL_USER}", "-p${MYSQL_PASSWORD}", ] interval: 10s timeout: 5s retries: 5 logging: *default-logging redis: image: redis:alpine restart: unless-stopped volumes: - redis_data:/data networks: - app-network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 logging: *default-logging networks: app-network: driver: bridge volumes: app_storage: driver: local app_cache: driver: local mysql_data: driver: local redis_data: driver: local image_public: driver: local