Skip to content
Snippets Groups Projects
Commit 6a5c345a authored by CANALS Gerome's avatar CANALS Gerome
Browse files

php 8.2

parent 7fefb4b2
No related branches found
No related tags found
No related merge requests found
......@@ -9,7 +9,8 @@ un ensemble de services correspondant à un environnement de *développement* we
### images php docker
Des images docker pour [php/apache](php), disponibles [ici](https://hub.docker.com/r/canals/php/).
+ une version php8.1 + apache (latest)
+ une version php8.2 + apache (latest)
+ une version php8.1 + apache
+ une version php8.1 cli
+ une version php8.0 + apache
+ une version php8.0 cli
......
# Use an official PHP runtime as a base image
FROM php:8.2-apache
RUN apt-get update && \
apt-get install --yes --force-yes \
cron g++ gettext libicu-dev openssl \
libc-client-dev libkrb5-dev \
libxml2-dev libfreetype6-dev \
libgd-dev libmcrypt-dev bzip2 \
libbz2-dev libtidy-dev libcurl4-openssl-dev \
libz-dev libmemcached-dev libxslt-dev git-core libpq-dev \
libzip4 libzip-dev libwebp-dev
# PHP Configuration
RUN docker-php-ext-install bcmath bz2 calendar dba exif gettext iconv intl soap tidy xsl zip&&\
docker-php-ext-install mysqli pgsql pdo pdo_mysql pdo_pgsql &&\
docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp &&\
docker-php-ext-install gd &&\
docker-php-ext-configure imap --with-kerberos --with-imap-ssl &&\
docker-php-ext-install imap &&\
docker-php-ext-configure hash --with-mhash &&\
pecl install xdebug && docker-php-ext-enable xdebug &&\
pecl install mongodb && docker-php-ext-enable mongodb &&\
pecl install redis && docker-php-ext-enable redis && \
curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/bin/composer
# Apache Configuration
RUN a2enmod rewrite
# SSL
RUN mv /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/000-default-ssl.conf &&\
a2enmod ssl && \
a2ensite 000-default-ssl &&\
openssl req -subj '/CN=example.com/O=My Company Name LTD./C=US' -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/ssl/private/ssl-cert-snakeoil.key -out /etc/ssl/certs/ssl-cert-snakeoil.pem
EXPOSE 80
EXPOSE 443
# Imagemagick : install fails on 8.0
RUN apt-get install --yes --force-yes libmagickwand-dev libmagickcore-dev
RUN yes '' | pecl install -f imagick &&\
docker-php-ext-enable imagick
COPY create_vhost config-vhost start /usr/local/bin/
COPY php.ini /usr/local/etc/php/
CMD ["start"]
\ No newline at end of file
# canals/php:8.1, latest
##Image docker PHP
Basée sur l'image officielle `php:8.1-apache`
#!/usr/bin/env bash
if [ -z "$VHOST_HOSTNAME" -o -z "$VHOST_DOCROOT" ]; then
echo "dont create vhost : hostname or docroot empty"
#
#
else
echo "configuring vhost : create_vhost -d $VHOST_DOCROOT -n $VHOST_HOSTNAME"
/usr/local/bin/create_vhost -d $VHOST_DOCROOT -n $VHOST_HOSTNAME
# echo "create cert : openssl req -subj '/CN=$VHOST_HOSTNAME/O=dev. team/C=fr' -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/ssl/private/$VHOST_HOSTNAME.key -out /etc/ssl/certs/$VHOST_HOSTNAME.pem"
openssl req -subj "/CN=$VHOST_HOSTNAME/O=dev.team/C=fr" -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/ssl/private/$VHOST_HOSTNAME.key -out /etc/ssl/certs/$VHOST_HOSTNAME.pem
# echo "create ssl vhost : create_vhost -d $VHOST_DOCROOT -s $VHOST_HOSTNAME"
/usr/local/bin/create_vhost -d $VHOST_DOCROOT -n $VHOST_HOSTNAME -s yes
fi
#echo "start apache foreground"
#apache2-foreground
\ No newline at end of file
#!/usr/bin/env bash
function show_usage {
cat <<- _EOF_
Create a new vHost in Debian/Ubuntu Server
Assumes /etc/apache2/sites-available and /etc/apache2/sites-enabled setup used
-d DocumentRoot - i.e. /var/www/yoursite
-h Help - Show this menu.
-n ServerName - i.e. example.com or sub.example.com
-a ServerAlias - i.e. *.example.com or another domain altogether
-s ssl flag : if set to "yes", generate a key/certificate and enables ssl for the vhost
-c Certificate filename. "xip.io" becomes "xip.io.key" and "xip.io.crt".
if not set, the server name is used as a cert. name
Example Usage.
sudo create_vhost -d /var/www/api -n api.dev.local -s yes
_EOF_
exit 1
}
#
# Output vHost skeleton, fill with userinput
# To be outputted into new file
#
function create_vhost {
cat <<- _EOF_
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName $ServerName
$ServerAlias
DocumentRoot $DocumentRoot
<Directory $DocumentRoot>
Options +Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
#<FilesMatch \.php$>
# Change this "proxy:unix:/path/to/fpm.socket"
# if using a Unix socket
# SetHandler "proxy:fcgi://127.0.0.1:9000"
#</FilesMatch>
</Directory>
ErrorLog \${APACHE_LOG_DIR}/$ServerName-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog \${APACHE_LOG_DIR}/$ServerName-access.log combined
</VirtualHost>
_EOF_
}
function create_ssl_vhost {
cat <<- _EOF_
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName $ServerName
$ServerAlias
DocumentRoot $DocumentRoot
<Directory $DocumentRoot>
Options +Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
#<FilesMatch \.php$>
# Change this "proxy:unix:/path/to/fpm.socket"
# if using a Unix socket
# SetHandler "proxy:fcgi://127.0.0.1:9000"
#</FilesMatch>
</Directory>
ErrorLog \${APACHE_LOG_DIR}/$ServerName-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog \${APACHE_LOG_DIR}/$ServerName-access.log combined
SSLEngine on
SSLCertificateFile $CertPath/$CertName.pem
SSLCertificateKeyFile $KeyPath/$CertName.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \\
nokeepalive ssl-unclean-shutdown \\
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
_EOF_
}
#Sanity Check - are there two arguments with 2 values?
if [ "$#" -lt 4 ]; then
show_usage
fi
CertPath="/etc/ssl/certs"
KeyPath="/etc/ssl/private"
#WithSsl="no"
#Parse flags
while getopts "d:s:a:n:c:h" OPTION; do
case $OPTION in
h)
show_usage
;;
d)
DocumentRoot=$OPTARG
;;
n)
ServerName=$OPTARG
;;
a)
Alias=$OPTARG
;;
s)
WithSsl=$OPTARG
;;
c)
CertName=$OPTARG
;;
*)
show_usage
;;
esac
done
# If alias is set:
if [ "$Alias" != "" ]; then
ServerAlias="ServerAlias "$Alias
else
ServerAlias=""
fi
# If CertName doesn't get set, set it to ServerName
if [ "$CertName" == "" ]; then
CertName=$ServerName
fi
if [ ! -d $DocumentRoot ]; then
mkdir -p $DocumentRoot
#chown USER:USER $DocumentRoot #POSSIBLE IMPLEMENTATION, new flag -u ?
fi
if [ -z "$WithSsl" ]; then
if [ -f "/etc/apache2/sites-enabled/$ServerName.conf" ]; then
echo 'vHost already exists. Aborting'
show_usage
else
create_vhost > /etc/apache2/sites-available/${ServerName}.conf
cd /etc/apache2/sites-available/ && a2ensite ${ServerName}.conf
fi
else
if [ -f "/etc/apache2/sites-enabled/$ServerName-ssl.conf" ]; then
echo 'vHost already exists. Aborting'
show_usage
else
create_ssl_vhost >> /etc/apache2/sites-available/${ServerName}-ssl.conf
fi
# Enable Site
cd /etc/apache2/sites-available/ && a2ensite ${ServerName}-ssl.conf
#service apache2 reload
fi
\ No newline at end of file
This diff is collapsed.
#!/usr/bin/env bash
config-vhost
echo "start apache foreground"
apache2-foreground
\ No newline at end of file
# canals/php
## Images docker PHP construite pour un usage pédagogique et pour fabriquer un environnement de développement web/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](https://hub.docker.com/_/php/), avec les tag `8.1-apache`, `8.1-cli`,`7.4-apache`, `7.4-cli`,`7.3-apache`, `7.3-cli`, `7.1-apache` ,
les images php [officielles](https://hub.docker.com/_/php/), avec les tag `8.2-apache`,`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](https://hub.docker.com/r/lavoweb/php-5.6/), et de
[vaprobash](https://github.com/fideloper/Vaprobash)
### tag
+ `8.1-apache`, `8.1`, `latest` : image pour php 8.1 + apache, basée sur l'image officielle `php:8.1-apache`
+ `8.2`, `latest` : image pour php 8.2 + apache, basée sur l'image officielle `php:8.2-apache`
+ `8.1-apache`, `8.1` : image pour php 8.1 + apache, basée sur l'image officielle `php:8.1-apache`
+ `8.1-cli` : image pour php 8.1 cli, sans apache, basée sur l'image officielle `php:8.1-cli`
+ `8.0-cli` : image pour php 8.0 cli, sans apache, basée sur l'image officielle `php:8.0-cli`
+ `8.0` : image pour php 8.0 + apache, basée sur l'image officielle `php:8.0-apache`
......@@ -31,7 +32,7 @@ Le répertoire [test](test) contient des fichiers docker-compose pour vérifier
### contenu des images
#### apache (`8.1`,`8.0`, `7.4`, `latest`, `7.3`, `7.2` , `7.1` , `5.6` ):
#### apache (`8.2`,`8.1`,`8.0`, `7.4`, `latest`, `7.3`, `7.2` , `7.1` , `5.6` ):
+ apache 2.4, modules `mod_rewrite` et `mod_ssl` activés,
+ un vhost par défaut sure le port 80, docroot `/var/www/html`
......@@ -42,7 +43,7 @@ Le répertoire [test](test) contient des fichiers docker-compose pour vérifier
#### 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`)
+ php8.2, 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`)
+ 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`
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment