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

8.2-ext from 8.2 + 8.3

parent 49a0e99f
No related branches found
No related tags found
No related merge requests found
# Use an official PHP image as a base image
FROM php:8.2-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 libwebp-dev
# PHP Configuration
RUN docker-php-ext-install bcmath bz2 calendar dba exif gettext intl soap tidy xsl zip sockets&&\
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 &&\
echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini &&\
echo "xdebug.client_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini &&\
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:8.1-cli`
# DEPRECATED
This diff is collapsed.
......@@ -10,13 +10,12 @@ RUN apt-get update && \
# PHP Configuration
RUN docker-php-ext-install bcmath bz2 calendar dba exif soap xsl
RUN docker-php-ext-install pdo_oci
RUN docker-php-ext-install bcmath bz2 calendar dba soap xsl
RUN docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp &&\
docker-php-ext-install gd
RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl &&\
docker-php-ext-install imap
RUN docker-php-ext-configure hash --with-mhash &&\
RUN docker-php-ext-configure hash --with-mhash
# Imagemagick : install fails on 8.0
......
......@@ -11,14 +11,17 @@ RUN apt-get update && \
# libxml2-dev libfreetype6-dev \
# PHP Configuration
RUN docker-php-ext-install exif gettext iconv intl tidy zip sockets &&\
docker-php-ext-install dba mysqli pgsql pdo_mysql pdo_pgsql &&\
pecl install xdebug && docker-php-ext-enable xdebug &&\
RUN docker-php-ext-install exif gettext iconv intl tidy zip sockets
RUN docker-php-ext-install pgsql mysqli
RUN docker-php-ext-install pdo_mysql
RUN docker-php-ext-install pdo_pgsql
RUN pecl install xdebug && docker-php-ext-enable xdebug &&\
echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini &&\
echo "xdebug.client_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini &&\
pecl install mongodb && docker-php-ext-enable mongodb &&\
pecl install redis && docker-php-ext-enable redis && \
curl -sS https://getcomposer.org/installer | php \
echo "xdebug.client_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN pecl install mongodb && docker-php-ext-enable mongodb
RUN pecl install redis && docker-php-ext-enable redis
RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/bin/composer
# docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp &&\
# docker-php-ext-install gd &&\
......
# Use an official PHP runtime as a base image
FROM php:8.3-apache
RUN apt-get update && \
apt-get install --yes --force-yes \
cron g++ gettext libicu-dev openssl \
libc-client-dev libmcrypt-dev \
libtidy-dev libcurl4-openssl-dev \
libz-dev libmemcached-dev git-core libpq-dev \
libzip4 libzip-dev libwebp-dev
# libxml2-dev libfreetype6-dev \
# PHP Configuration
RUN docker-php-ext-install gettext iconv intl tidy zip sockets
RUN docker-php-ext-install pgsql mysqli
RUN docker-php-ext-install pdo_mysql
RUN docker-php-ext-install pdo_pgsql
#RUN pecl install xdebug && docker-php-ext-enable xdebug &&\
# echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini &&\
# echo "xdebug.client_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN pecl install mongodb && docker-php-ext-enable mongodb
RUN pecl install redis && docker-php-ext-enable redis
RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/bin/composer
# docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp &&\
# docker-php-ext-install gd &&\
# 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.2, latest
## Image docker PHP
Basée sur l'image officielle `php:8.3-apache`
### Extensions PHP installées :
+ exif, gettext, iconv, intl, tidy, zip, sockets
+ dba, mysqli, pgsql, pdo_mysql, pdo_pgsql
+ mongodb, redis
### Note : XDdebug non installé, car non compatible avec PHP 8.3
#!/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
......@@ -11,8 +11,10 @@ Le dockerfile s'inspire de [celui-ci](https://hub.docker.com/r/lavoweb/php-5.6/)
[vaprobash](https://github.com/fideloper/Vaprobash)
### tag
+ `8.3` : image pour php 8.3 + apache, basée sur l'image officielle `php:8.3-apache`, pour l'instant sans xdebug, non compatible avec php 8.3
+ `8.2`, `latest` : image pour php 8.2 + apache, basée sur l'image officielle `php:8.2-apache`
+ `8.2-ext` : la même, mais avec une liste plus importante d'extensions (détails dans les README spécifiques)
+ `8.2-cli` : image pour php 8.2 cli, sans apache, basée sur l'image officielle `php:8.2-cli`
+ `8.1` : image pour php 8.1 + apache, basée sur l'image officielle `php:8.1-apache`, `DEPRECATED`
+ `8.1-cli` : image pour php 8.1 cli, sans apache, basée sur l'image officielle `php:8.1-cli` , `DEPRECATED`
+ `8.0-cli` : image pour php 8.0 cli, sans apache, basée sur l'image officielle `php:8.0-cli`, `DEPRECATED`
......
#!/usr/local/bin/bash
docker buildx build --platform=linux/amd64,linux/arm64,linux/arm/v8 -t canals/php:$1 ./$1/ --push
\ No newline at end of file
#!/bin/bash
#docker buildx create --name multibuild --driver=docker-container
docker buildx build --platform=linux/amd64,linux/arm64,linux/arm/v8 -t canals/php:$1 ./$1/ --builder=multibuild --push
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment