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

add php 7.3

parent 814674ed
No related branches found
No related tags found
No related merge requests found
#Quelques ressources docker à vocation pédagogique
# Quelques ressources docker à vocation pédagogique
##Contenu du dépôt :
## Contenu du dépôt :
###Template docker-compose
### Template docker-compose
Un [*template*](boilerplate/?fileviewer=file-view-default ) pour fabriquer et déployer
un ensemble de services correspondant à un environnement de *développement* web en php : php/apache, mysql, adminer, mongo, postgres etc ..
### images php docker
Des images docker pour [php/apache](php), disponibles [ici](https://hub.docker.com/r/canals/php/).
+ une version php7.3 + apache
+ une version php7.3 cli
+ une version php7.2 + apache
+ une version PHP7.2 cli
+ une version php7.2 cli
+ une version php 7.1 + apache
+ une version php 7.1 cli
+ une version php 5.6
\ No newline at end of file
......@@ -10,13 +10,9 @@ services:
environment:
- VHOST_HOSTNAME=web.dev.local
- VHOST_DOCROOT=/var/www/web
# - http_proxy=http://www-cache:1234
# - https_proxy=https://www-cache:1234
ports:
- "5080:80"
- "5543:443"
# env_file:
# - ./webenv.env
volumes :
- ./web:/var/www/web
- ./src:/var/www/src
......@@ -38,8 +34,6 @@ services:
- "8000"
ports:
- "8800:8000"
# env_file:
# - ./webenv.env
volumes:
- ./:/var/php
working_dir: /var/php
......
# Use an official Python runtime as a base image
FROM php:7.3-cli
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
# PHP Configuration
RUN docker-php-ext-install bcmath bz2 calendar dba exif gettext intl soap tidy xmlrpc xsl zip&&\
docker-php-ext-install mysqli pgsql pdo pdo_mysql pdo_pgsql &&\
docker-php-ext-configure gd --with-freetype-dir=/usr --with-jpeg-dir=/usr &&\
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 443
# Imagemagick
#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 start /usr/local/bin/
COPY php.ini /usr/local/etc/php/
# canals/php:7.1-cli, latest
##Image docker PHP
Basée sur l'iamge officielle `php:7.1-cli`
This diff is collapsed.
# Use an official Python runtime as a base image
FROM php:7.3-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
# PHP Configuration
RUN docker-php-ext-install bcmath bz2 calendar dba exif gettext intl soap tidy xmlrpc xsl zip&&\
docker-php-ext-install mysqli pgsql pdo pdo_mysql pdo_pgsql &&\
docker-php-ext-configure gd --with-freetype-dir=/usr --with-jpeg-dir=/usr &&\
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 443
# Imagemagick
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 start /usr/local/bin/
COPY php.ini /usr/local/etc/php/
CMD ["start"]
\ No newline at end of file
# canals/php:7.2, latest
##Image docker PHP
Basée sur l'iamge officielle `php:7.2-apache`
#!/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
if [ -z "$VHOST_HOSTNAME" -o -z "$VHOST_DOCROOT" ]; then
echo "dont create vhost : hostname or docroot empty"
#
#
else
# echo "create : 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
version: "3"
services:
php:
image: canals/php:7.3-cli
ports:
- "8800:8000"
volumes:
- ./src:/var/php
working_dir: /var/php
command: php -S 0.0.0.0:8000 index.php
version: "3"
services:
web:
image: canals/php:7.3
container_name: web.test.canals.php.7.3
ports:
- "27080:80"
- "27443:443"
volumes :
- ./web:/var/www/html
- ./src:/var/www/src
<?php
/**
* Created by PhpStorm.
* User: canals5
* Date: 23/09/2019
* Time: 11:30
*/
echo "php is running !". '<br>';
echo "uri : ". $_SERVER['PATH_INFO'] ;
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