-
Gérôme Canals authoredGérôme Canals authored
- canals/php
- Images docker PHP construite pour un usage pédagogique et pour fabriquer un environnement de développement web/php
- Description
- tag
- contenu des images
- apache (8.1,8.0, 7.4, latest, 7.3, 7.2 , 7.1 , 5.6 ):
- php :
- Utilisation des images
- image php-cli
- exemple : exécution d'un script php dans le répertoire courant :
- exemple : lancement d'un serveur php sur le port 8000 dans le répertoire courant :
- image php-apache
- exemple :
- Adaptation de l'image
- exemple
canals/php
Images docker PHP construite pour un usage pédagogique et pour fabriquer un environnement de développement web/php
Description
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.1-apache
, 8.1-cli
,7.4-apache
, 7.4-cli
,7.3-apache
, 7.3-cli
, 7.1-apache
,
7.1-cli
ou 5.6-apache
.
Les images contiennent un grand nombre d'extensions classiques et n'ont pas vocation à être utilisées en production.
Le dockerfile s'inspire de celui-ci, et de
vaprobash
tag
-
8.1-apache
,8.1
,latest
: image pour php 8.1 + apache, basée sur l'image officiellephp:8.1-apache
-
8.1-cli
: image pour php 8.1 cli, sans apache, basée sur l'image officiellephp:8.1-cli
-
8.0-cli
: image pour php 8.0 cli, sans apache, basée sur l'image officiellephp:8.0-cli
-
8.0
: image pour php 8.0 + apache, basée sur l'image officiellephp:8.0-apache
-
7.4-cli
: image pour php 7.4 cli, sans apache, basée sur l'image officiellephp:7.4-cli
-
7.4
: image pour php 7.4 + apache, basée sur l'image officiellephp:7.4-apache
-
7.3-cli
: image pour php 7.3 cli, sans apache, basée sur l'image officiellephp:7.3-cli
-
7.3
: image pour php 7.3 + apache, basée sur l'image officiellephp:7.3-apache
-
7.2-cli
: image pour php 7.2 cli, sans apache, basée sur l'image officiellephp:7.2-cli
-
7.2
: image pour php 7.2 + apache, basée sur l'image officiellephp:7.2-apache
-
7.1-cli
: image pour php 7.1 cli, sans apache, basée sur l'image officiellephp:7.1-cli
-
7.1
, : image pour php 7.1 + apache, basée sur l'image officiellephp:7.1-apache
-
5.6
: image pour php 5.6 + apache, basée sur l'image officiellephp:5.6-apache
###test Le répertoire test contient des fichiers docker-compose pour vérifier le fonctionnement de chacune des images
contenu des images
8.1
,8.0
, 7.4
, latest
, 7.3
, 7.2
, 7.1
, 5.6
):
apache (- apache 2.4, modules
mod_rewrite
etmod_ssl
activés, - un vhost par défaut sure 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.1, php8.0, php7.4, php7.3, php7.2, php7.1 ou 5.6 cli et sous forme de module apache dans les images apache (
mod_php7
,mod_php5
) - extensions :
mbstring
,curl
,ftp
,openssl
,zlib
,bcmath
,bz2
,calendar
,dba
,exif
gd
,gettext
,imap
,intl
,mcrypt
(uniquement 5.6, 7.1),soap
,tidy
,xmlrpc
(non installé sur 8.x),xsl
,zip
,imagick
(non installé sur 8.0) - 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 en mode développement :
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
image php-cli
L'image ne démarre aucune commande, et n'expose aucun port. Il est nécessaire de monter les volumes et de prévoir la commande lors de la création d'un conteneur.
exemple : 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.1-cli \
php prog.php
exemple : 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.1-cli \
php -S 0.0.0.0:8000
image php-apache
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 :
$ 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
Adaptation de l'image
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:latest
RUN pecl install mailparse \
&& docker-php-ext-enable mailparse
COPY local.ini /usr/local/etc/php/