← Tous les articles
March 20, 2026

🚀 Mise en place de NativePHP avec Docker, Jump et déploiement iOS

Développement Web PHP Développement IOS Laravel #IOS #Devops #nativePHP

Dans cet article, je vais expliquer en détail la mise en place de NativePHP dans un environnement Docker, les problèmes rencontrés (notamment liés aux hosts internes Docker), ainsi que les différentes stratégies pour tester et déployer une application Laravel en natif sur iOS.


📦 1. Architecture globale

L’objectif est d’exécuter une application Laravel dans un environnement Docker tout en permettant à NativePHP de générer une application iOS capable de se connecter à ce backend.

  • Laravel tourne dans un container Docker
  • NativePHP est utilisé pour générer l'app iOS
  • Jump sert à connecter l'app mobile au backend local

⚙️ 2. Installation de NativePHP

Dans ton projet Laravel :

composer require nativephp/laravel

Initialisation :

php artisan native:install

Build de l’application :

php artisan native:build ios

🐳 3. Docker-compose utilisé

Exemple de configuration adaptée :

version: "3.8"

services:

  laravel:
    build:
      context: ../
      dockerfile: laravel/Dockerfile
    container_name: myhomehub_laravel
    volumes:
      - ../../laravel:/var/www
      - ../../.env:/var/www/.env:ro
    ports:
      - "8000:8000"
    networks:
      - myhomehub_network

  native:
    build:
      context: ../
      dockerfile: laravel/Dockerfile
    container_name: myhomehub_native
    volumes:
      - ../../laravel:/var/www
      - ../../.env:/var/www/.env:ro
    ports:
      - "3000:3000"
    command: sh -c "php artisan serve --host=0.0.0.0 --port=8000 & php artisan native:jump ios"
    networks:
      - myhomehub_network

networks:
  myhomehub_network:

🐋 4. Dockerfile utilisé

# PHP 8.3
FROM php:8.3-fpm

# Install dependencies for Laravel
RUN apt-get update && apt-get install -y \
    bash \
    git \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    zip \
    unzip \
    libonig-dev \
    libicu-dev \
    curl \
    libxml2-dev \
    default-mysql-client \
    libzip-dev \
    nodejs \
    npm \
    rsync \
    grep \
    && docker-php-ext-install pdo pdo_mysql mbstring exif pcntl bcmath gd intl zip opcache soap

# Install Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

# Define WOR directory
WORKDIR /var/www/

# Laravel Permissions
RUN chown -R www-data:www-data /var/www

USER www-data

USER root

# Entrypoint to create laravel storage links and set permissions
COPY ../laravel/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]
CMD ["php-fpm"]


⚠️ 5. Problème rencontré : host interne Docker

Un problème majeur rencontré est que Jump retourne une configuration basée sur une IP interne Docker :

{"host":"172.18.0.3","port":"3000"}

Cette IP :

  • est interne au réseau Docker
  • n’est pas accessible depuis un iPhone
  • change à chaque redémarrage

Résultat : impossible de connecter l’app iOS au backend local via Wi-Fi.


📱 6. Limitation en environnement local

Même si le téléphone est sur le même réseau Wi-Fi :

  • l’IP Docker interne n’est pas routable
  • Laravel n’est pas accessible via cette IP

👉 Conclusion : impossible de faire fonctionner Jump correctement sans adapter l’environnement réseau.


🔧 7. Pourquoi Jump est utilisé

Jump sert à :

  • connecter l’application iOS au backend local
  • générer un QR code contenant host + port
  • faciliter le développement sans configuration manuelle

📦 8. Alternative sans Jump (avec Xcode)

Il est possible de se passer de Jump en :

  • générant un build iOS via NativePHP
  • ouvrant le projet dans Xcode
  • configurant manuellement l’URL du backend

Dans ce cas, l’application pointe directement vers un serveur accessible publiquement (ex: production).


🚀 9. Déploiement en production

Pour un usage en production :

  • Laravel doit être accessible via un domaine public (ex: thiebault.be)
  • SSL obligatoire (HTTPS)
  • configuration correcte du APP_URL

Ensuite :

  1. Build de l’app NativePHP
  2. Ouverture dans Xcode
  3. Configuration de l’identifiant Apple Developer
  4. Archive et upload vers App Store Connect
  5. Distribution via TestFlight

📲 10. Installation sur iPhone

Pour tester l’application :

  • Installer TestFlight depuis l’App Store
  • Recevoir une invitation via email ou lien
  • Installer l’application via TestFlight

Si Jump est utilisé dans le build :

  • Ouvrir l’app Jump sur iPhone
  • Scanner le QR code généré
  • Connexion automatique au backend

🧠 11. Conclusion

NativePHP permet de transformer une application Laravel en application iOS native avec une WebView enrichie. Cependant, l’intégration avec Docker pose des problèmes liés aux réseaux internes.

Jump simplifie les tests locaux mais montre ses limites avec Docker. Pour une approche robuste, il est recommandé de :

  • utiliser Jump uniquement en local hors Docker
  • ou pointer directement vers un backend accessible publiquement
  • et déployer via Xcode + TestFlight pour iOS

👉 En résumé : Docker + NativePHP + Jump fonctionne, mais nécessite une bonne compréhension des réseaux. En production, tout repose sur un backend accessible publiquement.

Thiébault Michaël ©