canals/php

By canals

Updated about 2 years ago

A php docker image built for pedagogical purposes. **DO NOT USE FOR PRODUCTION ENVIRONMENTS !**

Image
Languages & frameworks
0

4.0K

canals/php repository overview

Une image docker PHP pour des besoins pédagogiques : développement en php.

NE PAS UTILISER EN PRODUCTION !

Détails, exemples et code source disponibles ici : https://gitlab.univ-lorraine.fr/canals5/docker-php

Maintenant basée sur FrankenPHP !

Tags :

  • 8.3-franken : basée sur FrankenPHP
  • 8.3, latest (liste réduite d'extensions)
  • 8.3-ext(liste complète d'extensions)
  • 8.3-cli php cli uniquement, pas de serveur apache
  • 8.2 (liste réduite d'extensions)
  • 8.2-ext (liste complète d'extensions, cf. ci-dessous)
  • 8.2-cli
  • 8.1,
  • 8.1-cli
  • 8.0, 8.0-cli
  • 7.4,
  • 7.4-cli
  • 7.3, 7.3-cli
  • 7.2, 7.2-cli
  • 7.1, 7.1-cli
  • 5.6

Images docker pour la création d'un container destiné à du dev. web en php. Les images sont basées sur les images php officielle, avec les tag 8.3-apache, 8.3-cli, 8.2-apache, 8.2s-cli,8.1-apache, 8.1-cli, 8.0-apache, 8.0-cli, 7.4-apache, 7.4-cli,7.3-apache, 7.3-cli,7.2-apache, 7.2-cli, 7.1-apache, 7.1-cli, 5.6-apache, Le dockerfile s'inspire de celui-ci, et de vaprobash

Contenu des images

Les images sont fournies en 2 déclinaisons :

  • une déclinaison apache où php est installé sous forme d'un module apache et accompagné du serveur web apache,
  • une déclinaison cli où php est utilisable uniquement en ligne de commande.

apache :

  • apache 2.4, modules mod_rewrite et mod_ssl activés,
  • un vhost par défaut sur le port 80, docroot /var/www/html
  • un vhost ssl par défaut sur le port 443, docroot /var/www/html, certificat auto-signé
  • création optionnelle d'un vhost supplémentaire, sur les ports 80 et 443, en définissant 2 variables d'environnement :
    • VHOST_HOSTNAME : contient le hostname du vhost
    • VHOST_DOCROOT : le docroot du vhost

php :

  • php8.3, php8.2, php8.1, php8.0, php7.4,php7.3,php7.2, php7.1 ou php5.6
  • installé sous forme de module apache ( mod_php) dans les images contenant le serveur web,
  • extensions : mbstring, curl, ftp, openssl, zlib, bcmath, bz2, calendar, dba, exif, sockets, gd, gettext, imap, intl, mcrypt (sauf dans les images basées sur php 7.2) , soap, tidy, xmlrpc(sauf dans 8.0et 8.0-cli), xsl, zip, imagick (sauf sans 7.2-cliet 8.0, 8.0-cli`)
  • PDO : pdo, pdo_mysql, pdo_sqlite, pdo_pgsql
  • autres extensions : xdebug, mongodb, redis
  • composer
  • pour ajouter de nouvelles extensions : se référer à la doc de l'image php officielle, et créer un dockerfile

Configuration php :

La configuration fournie est prévue pour du développement. Ne pas utiliser en production !

[PHP]
;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;
engine = On
short_open_tag = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off

;;;;;;;;;;;;;;;;;
; Miscellaneous ;
;;;;;;;;;;;;;;;;;
expose_php = On

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 60
max_input_time = 60
memory_limit = 512M

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
html_errors = On

;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 16M
default_mimetype = "text/html"
default_charset = "UTF-8"

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
enable_dl = Off

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
file_uploads = On
upload_max_filesize = 8M
max_file_uploads = 25

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60

Utilisation des images

Il est conseillé de monter les volumes correspondant aux docroot des vhosts créés : vhost par défaut s'il est utilisé, vhost spécifique.

exemple (version apache) :

$ docker run -d --name vhost-php \
       -e "VHOST_HOSTNAME=vost.php.local" \
       -e "VHOST_DOCROOT=/var/www/vost"   \
       -p 9080:80 -p 9443:443 \
       -v $(PWD)/html:/var/www/html \
       -v $(PWD)/api:/var/www/vost \
       -v $(PWD)/src:/var/www/src \
       canals/php:latest

exemple (cli) : exécution d'un script php dans le répertoire courant :

$ docker run -it --rm  \
      -v "$PWD":/var/php \
      -w /var/php \
       canals/php:8.2-cli \
       php prog.php

exemple (cli) : lancement d'un serveur php sur le port 8000 dans le répertoire courant :

$ docker run --rm -it \
             -p 8000:8000 \
             -v "$PWD":/var/php \
             -w /var/php \
             canals/php:8.2-cli \
             php -S 0.0.0.0:8000 

Adaptation des images

Pour adapter l'image à des besoins particuliers, le plus simple est de créer un Dockerfile et de l'utiliser pour installer des extensions, pour copier un fichier de configuration ou pour déclarer un volume spécifique.

  • installer des extensions : utiliser l'approche proposée par l'image php officielle : voir les explications ici
  • modifier la configuration php : copier un fichier .ini dans le répertoire /usr/local/etc/php/

exemple

FROM canals/php:8.2-ext

RUN pecl install mailparse \
   && docker-php-ext-enable mailparse

COPY local.ini /usr/local/etc/php/

Tag summary

Content type

Image

Digest

sha256:fa1abfe93

Size

195.4 MB

Last updated

about 2 years ago

docker pull canals/php:8.3-franken