Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Application Symfony sur un Raspberry PI

Par Mathieu DELMARRE Publié le 25/04/2020 à 17:23:36 Noter cet article:
(0 votes)
En attente de relecture par le comité de lecture

Raspberry est un nano-ordinateur intégrant toutes les fonctionnalités d'un ordinateur. Symfony est un Framework PHP utilisé pour développer des applications web.

Dans cet article nous verrons comment héberger une application Symfony sur un Raspberry PI.

Pré-requis

Matériels utilisés :

Outils utilisés :

Installer Docker sur Raspberry PI

Première étape, utiliser le script d'installation :

$ curl -sSL https://get.docker.com | sh

*Redémarrer votre Raspberry peut-être nécessaire en cas d'apparition d'une erreur lors du lancement du démon docker.

Tester le fonctionnement de docker avec un hello-world :

$ sudo docker run --rm hello-world

Après l'installation de docker, seul l'utilisateur root peut lancer des containers docker.

Le résultat de cette commande hello-world devrait être ceci :

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1eda109e4da: Pull complete
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm32v7)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Pour ajouter un utilisateur dans le groupe docker :

$ sudo usermod -aG docker <votre_utilsateur>

Pour vérifier la version de docker installé :

$ docker -v

Résultat :

Docker version 19.03.8, build afacb8b

Installer Docker-compose sur Raspberry PI

Pour installer docker-compose nous allons utiliser le gestionnaire de paquets pip.

Première étape, télécharger et installer pip

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && sudo python3 get-pip.py

Ensuite, installer docker-compose :

$ sudo pip3 install docker-compose

Pour vérifier la version de docker-compose installé :

$ docker-compose -v

Résultat :

$ docker-compose version 1.25.5, build unknown

Utilisation du symfony-docker :

Pour plus de détails je vous invite à regarder le Github. Dans cet exemple nous utiliserons la version de Symfony 5 en php 7.4.

.

Pour commencer, télécharger le projet Github :

$ curl -LJO https://codeload.github.com/dunglas/symfony-docker/zip/master && unzip symfony-docker-master.zip && rm symfony-docker-master.zip

Déplacé vous dans le dossier précédemment créé :

$ cd symfony-docker-master

Lancer votre application Symfony à l'aide de docker-compose :

$ docker-compose up

La construction des images contenues dans le docker-compose.yml est longue sur un Raspberry PI 3.

Votre port 80 de votre Raspberry sera exposé sur le réseau local. Veuillez à ce qu'il soit disponible au lancement du docker-compose.

.

Résultat de la commande docker-compose up :

Creating network "symfony-docker-master_default" with the default driver
Building php
Step 1/29 : ARG PHP_VERSION=7.4
Step 2/29 : ARG NGINX_VERSION=1.17
Step 3/29 : FROM php:${PHP_VERSION}-fpm-alpine AS symfony_php
Step 4/29 : RUN apk add --no-cache         acl         fcgi         file         gettext         git         jq     ;
Step 5/29 : ARG APCU_VERSION=5.1.18
Step 6/29 : RUN set -eux;       apk add --no-cache --virtual .build-deps            $PHPIZE_DEPS            icu-dev         libzip-dev      zlib-dev    ;               docker-php-ext-configure zip;   docker-php-ext-install -j$(nproc)           intl            zip         ;       pecl install        apcu-${APCU_VERSION}        ;       pecl clear-cache;       docker-php-ext-enable      apcu             opcache     ;               runDeps="$(         scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions               | tr ',' '\n'           | sort -u               | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }'         )";     apk add --no-cache --virtual .phpexts-rundeps $runDeps;                apk del .build-deps
Step 7/29 : COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
Step 8/29 : RUN ln -s $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini
Step 9/29 : COPY docker/php/conf.d/symfony.ini $PHP_INI_DIR/conf.d/symfony.ini
Step 10/29 : RUN set -eux;      {               echo '[www]';           echo 'ping.path = /ping';       } | tee /usr/local/etc/php-fpm.d/docker-healthcheck.conf
Step 11/29 : ENV COMPOSER_ALLOW_SUPERUSER=1
Step 12/29 : RUN set -eux;      composer global require "symfony/flex" --prefer-dist --no-progress --no-suggest --classmap-authoritative;       composer clear-cache
Step 13/29 : ENV PATH="${PATH}:/root/.composer/vendor/bin"
Step 14/29 : WORKDIR /srv/app
Step 15/29 : ARG APP_ENV=prod
Step 16/29 : ARG STABILITY="stable"
Step 17/29 : ENV STABILITY ${STABILITY:-stable}
Step 18/29 : ARG SYMFONY_VERSION=""
Step 19/29 : RUN composer create-project "symfony/skeleton ${SYMFONY_VERSION}" . --stability=$STABILITY --prefer-dist --no-dev --no-progress --no-scripts --no-interaction;     composer clear-cache
Step 20/29 : COPY . .
Step 21/29 : RUN set -eux;      mkdir -p var/cache var/log;     composer dump-autoload --classmap-authoritative --no-dev;       composer run-script --no-dev post-install-cmd; sync
Step 22/29 : VOLUME /srv/app/var
Step 23/29 : COPY docker/php/docker-healthcheck.sh /usr/local/bin/docker-healthcheck
Step 24/29 : RUN chmod +x /usr/local/bin/docker-healthcheck
Step 25/29 : HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD ["docker-healthcheck"]
Step 26/29 : COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
Step 27/29 : RUN chmod +x /usr/local/bin/docker-entrypoint
Step 28/29 : ENTRYPOINT ["docker-entrypoint"]
Step 29/29 : CMD ["php-fpm"]

Successfully built fdde03507ac0
Successfully tagged symfony-docker-master_php:latest
WARNING: Image for service php was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.

Building nginx
Step 1/33 : ARG PHP_VERSION=7.4
Step 2/33 : ARG NGINX_VERSION=1.17
Step 3/33 : FROM php:${PHP_VERSION}-fpm-alpine AS symfony_php
Step 4/33 : RUN apk add --no-cache         acl         fcgi         file         gettext         git         jq     ;
Step 5/33 : ARG APCU_VERSION=5.1.18
Step 6/33 : RUN set -eux;       apk add --no-cache --virtual .build-deps            $PHPIZE_DEPS            icu-dev         libzip-dev      zlib-dev    ;               docker-php-ext-configure zip;   docker-php-ext-install -j$(nproc)           intl            zip         ;       pecl install        apcu-${APCU_VERSION}        ;       pecl clear-cache;       docker-php-ext-enable      apcu             opcache     ;               runDeps="$(         scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions               | tr ',' '\n'           | sort -u               | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }'         )";     apk add --no-cache --virtual .phpexts-rundeps $runDeps;                apk del .build-deps
Step 7/33 : COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
Step 8/33 : RUN ln -s $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini
Step 9/33 : COPY docker/php/conf.d/symfony.ini $PHP_INI_DIR/conf.d/symfony.ini
Step 10/33 : RUN set -eux;      {               echo '[www]';           echo 'ping.path = /ping';       } | tee /usr/local/etc/php-fpm.d/docker-healthcheck.conf
Step 11/33 : ENV COMPOSER_ALLOW_SUPERUSER=1
Step 12/33 : RUN set -eux;      composer global require "symfony/flex" --prefer-dist --no-progress --no-suggest --classmap-authoritative;       composer clear-cache
Step 13/33 : ENV PATH="${PATH}:/root/.composer/vendor/bin"
Step 14/33 : WORKDIR /srv/app
Step 15/33 : ARG APP_ENV=prod
Step 16/33 : ARG STABILITY="stable"
Step 17/33 : ENV STABILITY ${STABILITY:-stable}
Step 18/33 : ARG SYMFONY_VERSION=""
Step 19/33 : RUN composer create-project "symfony/skeleton ${SYMFONY_VERSION}" . --stability=$STABILITY --prefer-dist --no-dev --no-progress --no-scripts --no-interaction;     composer clear-cache
Step 20/33 : COPY . .
Step 21/33 : RUN set -eux;      mkdir -p var/cache var/log;     composer dump-autoload --classmap-authoritative --no-dev;       composer run-script --no-dev post-install-cmd; sync
Step 22/33 : VOLUME /srv/app/var
Step 23/33 : COPY docker/php/docker-healthcheck.sh /usr/local/bin/docker-healthcheck
Step 24/33 : RUN chmod +x /usr/local/bin/docker-healthcheck
Step 25/33 : HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD ["docker-healthcheck"]
Step 26/33 : COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
Step 27/33 : RUN chmod +x /usr/local/bin/docker-entrypoint
Step 28/33 : ENTRYPOINT ["docker-entrypoint"]
Step 29/33 : CMD ["php-fpm"]
Step 30/33 : FROM nginx:${NGINX_VERSION}-alpine AS symfony_nginx
Step 31/33 : COPY docker/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf
Step 32/33 : WORKDIR /srv/app
Step 33/33 : COPY --from=symfony_php /srv/app/public public/

Successfully built ca7aba545b3a
Successfully tagged symfony-docker-master_nginx:latest
WARNING: Image for service nginx was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.

Building h2-proxy
Step 1/44 : ARG PHP_VERSION=7.4
Step 2/44 : ARG NGINX_VERSION=1.17
Step 3/44 : FROM php:${PHP_VERSION}-fpm-alpine AS symfony_php
Step 4/44 : RUN apk add --no-cache         acl         fcgi         file         gettext         git         jq     ;
Step 5/44 : ARG APCU_VERSION=5.1.18
Step 6/44 : RUN set -eux;       apk add --no-cache --virtual .build-deps            $PHPIZE_DEPS            icu-dev         libzip-dev      zlib-dev    ;               docker-php-ext-configure zip;   docker-php-ext-install -j$(nproc)           intl            zip         ;       pecl install        apcu-${APCU_VERSION}        ;       pecl clear-cache;       docker-php-ext-enable      apcu             opcache     ;               runDeps="$(         scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions               | tr ',' '\n'           | sort -u               | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }'         )";     apk add --no-cache --virtual .phpexts-rundeps $runDeps;                apk del .build-deps
Step 7/44 : COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
Step 8/44 : RUN ln -s $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini
Step 9/44 : COPY docker/php/conf.d/symfony.ini $PHP_INI_DIR/conf.d/symfony.ini
Step 10/44 : RUN set -eux;      {               echo '[www]';           echo 'ping.path = /ping';       } | tee /usr/local/etc/php-fpm.d/docker-healthcheck.conf
Step 11/44 : ENV COMPOSER_ALLOW_SUPERUSER=1
Step 12/44 : RUN set -eux;      composer global require "symfony/flex" --prefer-dist --no-progress --no-suggest --classmap-authoritative;       composer clear-cache
Step 13/44 : ENV PATH="${PATH}:/root/.composer/vendor/bin"
Step 14/44 : WORKDIR /srv/app
Step 15/44 : ARG APP_ENV=prod
Step 16/44 : ARG STABILITY="stable"
Step 17/44 : ENV STABILITY ${STABILITY:-stable}
Step 18/44 : ARG SYMFONY_VERSION=""
Step 19/44 : RUN composer create-project "symfony/skeleton ${SYMFONY_VERSION}" . --stability=$STABILITY --prefer-dist --no-dev --no-progress --no-scripts --no-interaction;     composer clear-cache
Step 20/44 : COPY . .
Step 21/44 : RUN set -eux;      mkdir -p var/cache var/log;     composer dump-autoload --classmap-authoritative --no-dev;       composer run-script --no-dev post-install-cmd; sync
Step 22/44 : VOLUME /srv/app/var
Step 23/44 : COPY docker/php/docker-healthcheck.sh /usr/local/bin/docker-healthcheck
Step 24/44 : RUN chmod +x /usr/local/bin/docker-healthcheck
Step 25/44 : HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD ["docker-healthcheck"]
Step 26/44 : COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
Step 27/44 : RUN chmod +x /usr/local/bin/docker-entrypoint
Step 28/44 : ENTRYPOINT ["docker-entrypoint"]
Step 29/44 : CMD ["php-fpm"]
Step 30/44 : FROM nginx:${NGINX_VERSION}-alpine AS symfony_nginx
Step 31/44 : COPY docker/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf
Step 32/44 : WORKDIR /srv/app
Step 33/44 : COPY --from=symfony_php /srv/app/public public/
Step 34/44 : FROM alpine:latest AS symfony_h2-proxy-cert
Step 35/44 : RUN apk add --no-cache openssl
Step 36/44 : RUN openssl genrsa -des3 -passout pass:NotSecure -out server.pass.key 2048
Step 37/44 : RUN openssl rsa -passin pass:NotSecure -in server.pass.key -out server.key
Step 38/44 : RUN rm server.pass.key
Step 39/44 : RUN openssl req -new -passout pass:NotSecure -key server.key -out server.csr       -subj '/C=SS/ST=SS/L=Gotham City/O=Symfony/CN=localhost'
Step 40/44 : RUN openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt
Step 41/44 : FROM nginx:${NGINX_VERSION}-alpine AS symfony_h2-proxy
Step 42/44 : RUN mkdir -p /etc/nginx/ssl/
Step 43/44 : COPY --from=symfony_h2-proxy-cert server.key server.crt /etc/nginx/ssl/
Step 44/44 : COPY ./docker/h2-proxy/default.conf /etc/nginx/conf.d/default.conf

Successfully built 1a67bbd44a77
Successfully tagged symfony-docker-master_h2-proxy:latest
WARNING: Image for service h2-proxy was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating symfony-docker-master_php_1 ... done
Creating symfony-docker-master_nginx_1 ... done
Creating symfony-docker-master_h2-proxy_1 ... done
Attaching to symfony-docker-master_php_1, symfony-docker-master_nginx_1, symfony-docker-master_h2-proxy_1
php_1       | Installing symfony/skeleton (v5.0.99)
php_1       |   - Installing symfony/skeleton (v5.0.99): Downloading (100%)
php_1       | Created project in tmp
php_1       | Loading composer repositories with package information
php_1       | Updating dependencies (including require-dev)
php_1       | Package operations: 1 install, 0 updates, 0 removals
php_1       |   - Installing symfony/flex (v1.6.2): Downloading (100%)
php_1       | Writing lock file
php_1       | Generating autoload files
php_1       | Symfony operations: 1 recipe (4cfbe7828e2b574ef008790fad608858)
php_1       |   - Configuring symfony/flex (>=1.0): From github.com/symfony/recipes:master
php_1       | Loading composer repositories with package information
php_1       | Updating dependencies (including require-dev)
php_1       | Restricting packages listed in "symfony/symfony" to "5.0.*"
php_1       |
php_1       | Prefetching 27 packages
php_1       |   - Downloading (100%)
php_1       |
php_1       | Package operations: 27 installs, 0 updates, 0 removals
php_1       |   - Installing psr/container (1.0.0): Loading from cache
php_1       |   - Installing symfony/service-contracts (v2.0.1): Loading from cache
php_1       |   - Installing symfony/polyfill-php73 (v1.15.0): Loading from cache
php_1       |   - Installing symfony/polyfill-mbstring (v1.15.0): Loading from cache
php_1       |   - Installing symfony/console (v5.0.7): Loading from cache
php_1       |   - Installing symfony/dotenv (v5.0.7): Loading from cache
php_1       |   - Installing symfony/routing (v5.0.7): Loading from cache
php_1       |   - Installing symfony/finder (v5.0.7): Loading from cache
php_1       |   - Installing symfony/filesystem (v5.0.7): Loading from cache
php_1       |   - Installing psr/log (1.1.3): Loading from cache
php_1       |   - Installing symfony/polyfill-intl-idn (v1.15.0): Loading from cache
php_1       |   - Installing symfony/mime (v5.0.7): Loading from cache
php_1       |   - Installing symfony/http-foundation (v5.0.7): Loading from cache
php_1       |   - Installing psr/event-dispatcher (1.0.0): Loading from cache
php_1       |   - Installing symfony/event-dispatcher-contracts (v2.0.1): Loading from cache
php_1       |   - Installing symfony/event-dispatcher (v5.0.7): Loading from cache
php_1       |   - Installing symfony/var-dumper (v5.0.7): Loading from cache
php_1       |   - Installing symfony/error-handler (v5.0.7): Loading from cache
php_1       |   - Installing symfony/http-kernel (v5.0.7): Loading from cache
php_1       |   - Installing symfony/dependency-injection (v5.0.7): Loading from cache
php_1       |   - Installing symfony/config (v5.0.7): Loading from cache
php_1       |   - Installing symfony/var-exporter (v5.0.7): Loading from cache
php_1       |   - Installing psr/cache (1.0.1): Loading from cache
php_1       |   - Installing symfony/cache-contracts (v2.0.1): Loading from cache
php_1       |   - Installing symfony/cache (v5.0.7): Loading from cache
php_1       |   - Installing symfony/framework-bundle (v5.0.7): Loading from cache
php_1       |   - Installing symfony/yaml (v5.0.7): Loading from cache
php_1       | Writing lock file
php_1       | Generating autoload files
php_1       | Symfony operations: 3 recipes (4cfbe7828e2b574ef008790fad608858)
php_1       |   - Configuring symfony/framework-bundle (>=4.4): From github.com/symfony/recipes:master
php_1       |   - Configuring symfony/console (>=4.4): From github.com/symfony/recipes:master
php_1       |   - Configuring symfony/routing (>=4.2): From github.com/symfony/recipes:master
php_1       | Executing script cache:clear [OK]
php_1       | Executing script assets:install public [OK]
php_1       |
php_1       | Some files may have been created or updated to configure your new packages.
php_1       | Please review, edit and commit them: these files are yours.
php_1       |
php_1       | Some files may have been created or updated to configure your new packages.
php_1       | Please review, edit and commit them: these files are yours.
php_1       |
php_1       |
php_1       |  What's next?
php_1       |
php_1       |
php_1       |   * Run your application:
php_1       |     1. Go to the project directory
php_1       |     2. Create your code repository with the git init command
php_1       |     3. Download the Symfony CLI at https://symfony.com/download to install a development web server
php_1       |
php_1       |   * Read the documentation at https://symfony.com/doc
php_1       |
php_1       | [25-Apr-2020 15:10:26] NOTICE: fpm is running, pid 1
php_1       | [25-Apr-2020 15:10:26] NOTICE: ready to handle connections
php_1       | 127.0.0.1 -  25/Apr/2020:15:10:29 +0000 "GET /ping" 200
php_1       | 127.0.0.1 -  25/Apr/2020:15:10:39 +0000 "GET /ping" 200
php_1       | 127.0.0.1 -  25/Apr/2020:15:10:49 +0000 "GET /ping" 200
php_1       | 127.0.0.1 -  25/Apr/2020:15:11:00 +0000 "GET /ping" 200
php_1       | 127.0.0.1 -  25/Apr/2020:15:11:10 +0000 "GET /ping" 200
php_1       | 127.0.0.1 -  25/Apr/2020:15:11:20 +0000 "GET /ping" 200
php_1       | 2020-04-25T15:11:28+00:00 [debug] Warning: filemtime(): stat failed for /srv/app/tmp/config/routes/dev/framework.yaml
php_1       | 2020-04-25T15:11:28+00:00 [debug] Warning: filemtime(): stat failed for /srv/app/tmp/config/routes/dev/framework.yaml
php_1       | 2020-04-25T15:11:28+00:00 [error] Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /robots.txt"" at /srv/app/vendor/symfony/http-kernel/EventListener/RouterListener.php line 136
php_1       | 2020-04-25T15:11:28+00:00 [error] Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /"" at /srv/app/vendor/symfony/http-kernel/EventListener/RouterListener.php line 136
nginx_1     | 192.168.2.1 - - [25/Apr/2020:15:11:28 +0000] "GET / HTTP/1.1" 404 31957 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0" "-"
php_1       | 172.19.0.3 -  25/Apr/2020:15:11:28 +0000 "GET /index.php" 404
nginx_1     | 192.168.2.1 - - [25/Apr/2020:15:11:28 +0000] "GET /robots.txt HTTP/1.1" 404 164892 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0" "-"
php_1       | 172.19.0.3 -  25/Apr/2020:15:11:28 +0000 "GET /index.php" 404
php_1       | 2020-04-25T15:11:29+00:00 [error] Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /favicon.ico"" at /srv/app/vendor/symfony/http-kernel/EventListener/RouterListener.php line 136
nginx_1     | 192.168.2.1 - - [25/Apr/2020:15:11:29 +0000] "GET /favicon.ico HTTP/1.1" 404 164900 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0" "-"
php_1       | 172.19.0.3 -  25/Apr/2020:15:11:29 +0000 "GET /index.php" 404
php_1       | 127.0.0.1 -  25/Apr/2020:15:11:30 +0000 "GET /ping" 200
^CGracefully stopping... (press Ctrl+C again to force)
Stopping symfony-docker-master_h2-proxy_1 ... done
Stopping symfony-docker-master_nginx_1    ... done
Stopping symfony-docker-master_php_1      ... done

Pour accéder à votre application Symfony via votre ordinateur, renseigner l'ip local de votre raspberry dans votre navigateur par défaut.

Afin de lancer en mode détaché le docker-compose, veuillez rajouter l'option -d à votre commande :

$ docker-compose up -d

.

Dans ce docker-compose nous avons 3 containers :

  1. PHP → Contenant votre projet Symfony

  2. NGINX → Serveur web exposé sur le port 80 de votre hôte.

  3. H2-PROXY → Proxy fournissant l'accès au ssl, exposé sur le port 443.

.

Résultat sur le web :

Conclusion

Vous pouvez maintenant développer votre application Symfony et la déployer sur votre Raspberry. Veuillez garder à l'esprit que cet article n'est pas fait pour une mise en production d'une application web.

.

Votre Raspberry PI peut lancer une multitude de containers docker. Garder en tête que les ressources d'un seul Raspberry est limité. Pour aller plus loin, la réalisation d'un groupement de Raspberry est envisageable.

https://blog.alexellis.io/dockerswarm-pizero/ : Pour en savoir plus sur Docker Swarm avec des Raspberry PI.

A savoir que votre Raspberry ne peut pas faire tourner l'ensemble des images docker en raison d'une architecture processeur ARM.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels