Skip to content

Guide Docker

WimaZone Billing prend en charge les déploiements Docker sur serveur standard et dans des workflows liés à RouterOS.

Bases de données supportées

MoteurVersionUtilisationCharset
SQLite3.xDéploiement MikroTik (embarqué)
MySQL8.0Déploiement serveur / CasaOSutf8mb4 / utf8mb4_unicode_ci
MariaDB11.5Déploiement production (Docker)utf8mb4 / utf8mb4_unicode_ci

Le choix du moteur se fait via DB_CONNECTION (valeurs : sqlite ou mysql). Les extensions PHP pdo_mysql et pdo_sqlite sont toutes deux installées dans l'image Docker.

Démarrage rapide (SQLite)

bash
git clone https://github.com/ITDev-Success/billing.git
cd billing
cp .env.example .env
docker compose up -d --build

Accédez ensuite à http://localhost:8080.

Commandes post-démarrage si nécessaire :

bash
docker exec -it billing php artisan key:generate
docker exec -it billing php artisan migrate --force

Exemple Docker Compose (SQLite / MikroTik)

yaml
services:
  billing:
    build:
      context: .
      dockerfile: Dockerfile.mikrotik
    container_name: billing
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      - APP_ENV=production
      - APP_DEBUG=false
      - APP_URL=http://localhost:8080
      - LARAVEL_ENABLE_QUEUE_WORKER=true
      - LARAVEL_QUEUE_WORKER_OPTIONS=--queue=mikrotik,default --tries=1 --timeout=1200 --sleep=2
      - MIKROTIK_BOOT_HOTSPOT_SYNC=false
    volumes:
      - ./:/var/www/html

Déploiement CasaOS (MySQL)

Le fichier deploy/docker-compose.yml déploie une stack complète avec MySQL 8.0 et phpMyAdmin :

ServiceImagePortRôle
wima-zoneshinsenter/laravel:php8.48081 (HTTP), 8443 (HTTPS)Application Laravel
wima-zone-mysqlmysql:8.03306Base de données MySQL
wima-zone-phpmyadminphpmyadmin/phpmyadmin:latest8080Administration DB
bash
cd deploy
docker compose up -d
docker exec -it wima-zone php artisan migrate --force

Variables MySQL à configurer :

env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=wimazone
DB_USERNAME=laravel
DB_PASSWORD=change_me
DB_ROOT_PASSWORD=change_root_password

Volumes persistants CasaOS :

Chemin hôteChemin containerContenu
/DATA/AppData/wima-zone/wwwroot/var/www/htmlCode source Laravel
/DATA/AppData/wima-zone/mysql/var/lib/mysqlDonnées MySQL

Déploiement Production (MariaDB)

Le fichier deploy/docker-compose.prod.yml déploie une stack production complète avec MariaDB 11.5, Nginx, Redis et des workers dédiés :

ServiceImageRôle
appImage custom (Dockerfile)Application PHP-FPM
webnginx:1.27-alpineServeur web (port 8080)
workerImage customQueue worker Laravel
schedulerImage customScheduler Laravel
dbmariadb:11.5Base de données MariaDB
redisredis:7-alpineCache et sessions
bash
cd deploy
docker compose -f docker-compose.prod.yml up -d

Variables MariaDB production :

env
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=billing
DB_USERNAME=billing
DB_PASSWORD=change_me
DB_ROOT_PASSWORD=change_root_password

Health checks intégrés : MariaDB (mariadb-admin ping, 10 retries), App PHP (php -v), Nginx (wget http://localhost/up). Les services app, worker et scheduler attendent que la base soit saine (service_healthy) avant de démarrer.

Versions

  • Utilisez les tags de release du dépôt projet.
  • Version documentée actuellement : v3.4.0.

Variables d'environnement utiles

VariableDescriptionDéfaut
APP_ENVEnvironnement Laravel.production
APP_DEBUGMode debug.false
APP_URLURL publique de l'application.http://localhost:8080
REDIRECT_URLURL de redirection de secours du portail captif.http://wima-zone.wifi
HOTSPOT_STATUS_TIMEOUT_SECONDSTimeout de l'appel API hotspot status.2
HOTSPOT_STATUS_CACHE_SECONDSDurée de cache hotspot status.3
HOTSPOT_STATUS_FAILURE_COOLDOWN_SECONDSCooldown si routeur indisponible.20
MIKROTIK_BOOT_HOTSPOT_SYNCMise en file synchro hotspot au démarrage.false
MIKROTIK_BOOT_HOTSPOT_SYNC_PROCESS_NOWExécution immédiate de la synchro de démarrage.false

Recommandé pour le premier démarrage (création admin) :

env
SEED_SUPER_ADMIN_EMAIL=admin@example.com
SEED_SUPER_ADMIN_PASSWORD=remplacer-par-un-mot-de-passe-fort

Volumes

Chemins importants :

  • /var/www/html/storage
  • /var/www/html/bootstrap/cache
  • /var/www/html/database (si SQLite)
  • /var/lib/mysql (si MySQL/MariaDB, via volume Docker)

Mise à jour

bash
git pull
docker compose build --no-cache
docker compose up -d
docker exec -it billing php artisan migrate --force
docker exec -it billing php artisan optimize:clear

Pour le mode container RouterOS, suivez les scripts de déploiement projet et les images validées.

Proprietary software. Internal usage only.