1
0
Fork 0
mirror of https://codeberg.org/icewind/haze.git synced 2026-06-03 09:04:12 +02:00

php versions

This commit is contained in:
Robin Appelman 2021-03-14 20:02:54 +01:00
commit 6b922733e2
11 changed files with 322 additions and 13 deletions

View file

@ -22,10 +22,11 @@ work_dir = "/path/to/temp/folder" # optional, defaults to /tmp/haze
#### Start an instance
```bash
haze start [database]
haze start [database] [php-version]
```
Where database is one of `sqlite`, `mysql`, `mariadb` or `pgsql` with an optional version (e.g. `pgsql:12`), defaults to `sqlite`.
Where `database` is one of `sqlite`, `mysql`, `mariadb` or `pgsql` with an optional version (e.g. `pgsql:12`), defaults to `sqlite`.
And `php-version` is one of `7.2`, `7.3`, `7.4`, `8.0`, `7` or `8`, defaults to `8.0`
### List running instances

View file

@ -1,3 +1,4 @@
*.tar.bz2
*.tar.bz2.asc
.vagrant/
Dockerfile

15
images/build.sh Executable file
View file

@ -0,0 +1,15 @@
#!/bin/bash
versions=("7.2" "7.3" "7.4" "8.0")
for version in "${versions[@]}"; do
echo "building haze-php-$version"
docker build -t "icewind1991/haze-php:$version" -f "php/Dockerfile.$version" php
done
for version in "${versions[@]}"; do
echo "building haze-$version"
cp haze/Dockerfile.tmpl haze/Dockerfile
sed -i "s/<version>/$version/" haze/Dockerfile
docker build -t "icewind1991/haze:$version" -f "haze/Dockerfile" haze
done

View file

@ -1,4 +1,4 @@
FROM icewind1991/haze-php:7.4
FROM icewind1991/haze-php:<version>
MAINTAINER Robin Appelman <robin@icewind.nl>
# MAINTAINER Robin Schneider <ypid@riseup.net>
# MAINTAINER silvio <silvio@port1024.net>

92
images/php/Dockerfile.7.2 Normal file
View file

@ -0,0 +1,92 @@
FROM php:7.2-fpm
MAINTAINER Robin Appelman <robin@icewind.nl>
RUN DEBIAN_FRONTEND=noninteractive ;\
apt-get update && \
apt-get install --assume-yes \
bzip2 \
nginx \
libaio-dev \
wget \
unzip \
&& rm -rf /var/lib/apt/lists/*
# php exceptions
RUN apt-get update \
&& apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
libpq5 \
libpq-dev \
libsqlite3-dev \
libcurl4-openssl-dev \
libicu-dev \
libzip-dev \
libmagickwand-dev \
libmagickcore-dev \
libonig-dev \
libldap2-dev \
libsmbclient-dev \
&& docker-php-ext-configure gd \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-freetype-dir \
&& docker-php-ext-install iconv zip pdo pdo_pgsql pdo_sqlite pgsql pdo_mysql intl curl mbstring gd pcntl ldap \
&& pecl install imagick \
&& pecl install inotify \
&& pecl install smbclient \
&& apt-get remove -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
libpq-dev \
libsqlite3-dev \
libcurl4-openssl-dev \
libicu-dev \
libzip-dev \
libmagick-dev \
libmagickwand-dev \
libmagickcore-dev \
libonig-dev \
libldap2-dev \
libsmbclient-dev \
&& rm -rf /var/lib/apt/lists/*
RUN pecl install apcu \
&& pecl install xdebug \
&& pecl install redis \
&& export VERSION=`php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;"` \
&& curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/${VERSION} \
&& tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp \
&& mv /tmp/blackfire-*.so `php -r "echo ini_get('extension_dir');"`/blackfire.so \
&& echo "extension=imagick.so" > $PHP_INI_DIR/conf.d/imagick.ini \
&& echo "extension=smbclient.so" > $PHP_INI_DIR/conf.d/smbclient.ini \
&& echo "extension=inotify.so" > $PHP_INI_DIR/conf.d/inotify.ini \
&& echo "extension=blackfire.so\nblackfire.agent_socket=\${BLACKFIRE_PORT}" > $PHP_INI_DIR/conf.d/blackfire.ini \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "xdebug.mode=debug,trace,profile" >> $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "xdebug.start_with_request=trigger" >> $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "xdebug.remote_port=9000" >> $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "xdebug.discover_client_host=true" >> $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "memory_limit = 512M" > $PHP_INI_DIR/conf.d/memory_limit.ini
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
ADD apcu.ini opcache.ini redis.ini $PHP_INI_DIR/conf.d/
ADD nginx.conf nginx-app.conf /etc/nginx/
ADD php-fpm.conf /usr/local/etc/
ADD index.php /var/www/html/
ADD bootstrap-nginx.sh /usr/local/bin/
EXPOSE 80
ENTRYPOINT ["bootstrap-nginx.sh"]

View file

@ -55,7 +55,7 @@ RUN apt-get update \
libonig-dev \
libldap2-dev \
libsmbclient-dev \
&& rm -rf /var/lib/apt/lists/*
&& rm -rf /var/lib/apt/lists/*
RUN pecl install apcu \
&& pecl install xdebug \
@ -76,7 +76,7 @@ RUN pecl install apcu \
&& echo "memory_limit = 512M" > $PHP_INI_DIR/conf.d/memory_limit.ini
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
ADD apcu.ini opcache.ini redis.ini $PHP_INI_DIR/conf.d/
ADD nginx.conf nginx-app.conf /etc/nginx/

90
images/php/Dockerfile.7.4 Normal file
View file

@ -0,0 +1,90 @@
FROM php:7.4-fpm
MAINTAINER Robin Appelman <robin@icewind.nl>
RUN DEBIAN_FRONTEND=noninteractive ;\
apt-get update && \
apt-get install --assume-yes \
bzip2 \
nginx \
libaio-dev \
wget \
unzip \
&& rm -rf /var/lib/apt/lists/*
# php exceptions
RUN apt-get update \
&& apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
libpq5 \
libpq-dev \
libsqlite3-dev \
libcurl4-openssl-dev \
libicu-dev \
libzip-dev \
libmagickwand-dev \
libmagickcore-dev \
libonig-dev \
libldap2-dev \
libsmbclient-dev \
&& docker-php-ext-configure gd \
--enable-gd \
--with-jpeg \
--with-freetype \
&& docker-php-ext-install iconv zip pdo pdo_pgsql pdo_sqlite pgsql pdo_mysql intl curl mbstring gd pcntl ldap \
&& pecl install imagick \
&& pecl install inotify \
&& pecl install smbclient \
&& apt-get remove -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
libpq-dev \
libsqlite3-dev \
libcurl4-openssl-dev \
libicu-dev \
libzip-dev \
libmagick-dev \
libmagickwand-dev \
libmagickcore-dev \
libonig-dev \
libldap2-dev \
libsmbclient-dev \
&& rm -rf /var/lib/apt/lists/*
RUN pecl install apcu \
&& pecl install xdebug \
&& pecl install redis \
&& export VERSION=`php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;"` \
&& curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/${VERSION} \
&& tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp \
&& mv /tmp/blackfire-*.so `php -r "echo ini_get('extension_dir');"`/blackfire.so \
&& echo "extension=imagick.so" > $PHP_INI_DIR/conf.d/imagick.ini \
&& echo "extension=smbclient.so" > $PHP_INI_DIR/conf.d/smbclient.ini \
&& echo "extension=inotify.so" > $PHP_INI_DIR/conf.d/inotify.ini \
&& echo "extension=blackfire.so\nblackfire.agent_socket=\${BLACKFIRE_PORT}" > $PHP_INI_DIR/conf.d/blackfire.ini \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "xdebug.mode=debug,trace,profile" >> $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "xdebug.start_with_request=trigger" >> $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "xdebug.remote_port=9000" >> $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "xdebug.discover_client_host=true" >> $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "memory_limit = 512M" > $PHP_INI_DIR/conf.d/memory_limit.ini
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
ADD apcu.ini opcache.ini redis.ini $PHP_INI_DIR/conf.d/
ADD nginx.conf nginx-app.conf /etc/nginx/
ADD php-fpm.conf /usr/local/etc/
ADD index.php /var/www/html/
ADD bootstrap-nginx.sh /usr/local/bin/
EXPOSE 80
ENTRYPOINT ["bootstrap-nginx.sh"]

91
images/php/Dockerfile.8.0 Normal file
View file

@ -0,0 +1,91 @@
FROM php:8.0-fpm
MAINTAINER Robin Appelman <robin@icewind.nl>
RUN DEBIAN_FRONTEND=noninteractive ;\
apt-get update && \
apt-get install --assume-yes \
bzip2 \
nginx \
libaio-dev \
wget \
unzip \
&& rm -rf /var/lib/apt/lists/*
# php exceptions
RUN apt-get update \
&& apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
libpq5 \
libpq-dev \
libsqlite3-dev \
libcurl4-openssl-dev \
libicu-dev \
libzip-dev \
libmagickwand-dev \
libmagickcore-dev \
libonig-dev \
libldap2-dev \
libsmbclient-dev \
&& docker-php-ext-configure gd \
--enable-gd \
--with-jpeg \
--with-freetype \
&& mkdir -p /usr/src/php/ext/imagick \
&& curl -fsSL https://github.com/Imagick/imagick/archive/06116aa24b76edaf6b1693198f79e6c295eda8a9.tar.gz | tar xvz -C "/usr/src/php/ext/imagick" --strip 1 \
&& docker-php-ext-install imagick \
&& docker-php-ext-install iconv zip pdo pdo_pgsql pdo_sqlite pgsql pdo_mysql intl curl mbstring gd pcntl ldap \
&& pecl install inotify \
&& pecl install smbclient \
&& apt-get remove -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
libpq-dev \
libsqlite3-dev \
libcurl4-openssl-dev \
libicu-dev \
libzip-dev \
libmagick-dev \
libmagickwand-dev \
libmagickcore-dev \
libonig-dev \
libldap2-dev \
libsmbclient-dev \
&& rm -rf /var/lib/apt/lists/*
RUN pecl install apcu \
&& pecl install xdebug \
&& pecl install redis \
&& export VERSION=`php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;"` \
&& curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/${VERSION} \
&& tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp \
&& mv /tmp/blackfire-*.so `php -r "echo ini_get('extension_dir');"`/blackfire.so \
&& echo "extension=smbclient.so" > $PHP_INI_DIR/conf.d/smbclient.ini \
&& echo "extension=inotify.so" > $PHP_INI_DIR/conf.d/inotify.ini \
&& echo "extension=blackfire.so\nblackfire.agent_socket=\${BLACKFIRE_PORT}" > $PHP_INI_DIR/conf.d/blackfire.ini \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "xdebug.mode=debug,trace,profile" >> $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "xdebug.start_with_request=trigger" >> $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "xdebug.client_port=9000" >> $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "xdebug.discover_client_host=true" >> $PHP_INI_DIR/conf.d/xdebug.ini \
&& echo "memory_limit = 512M" > $PHP_INI_DIR/conf.d/memory_limit.ini
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
ADD apcu.ini opcache.ini redis.ini $PHP_INI_DIR/conf.d/
ADD nginx.conf nginx-app.conf /etc/nginx/
ADD php-fpm.conf /usr/local/etc/
ADD index.php /var/www/html/
ADD bootstrap-nginx.sh /usr/local/bin/
EXPOSE 80
ENTRYPOINT ["bootstrap-nginx.sh"]

View file

@ -5,8 +5,8 @@ touch /var/log/nginx/error.log
tail --follow --retry /var/log/nginx/*.log &
UID=${UID:-$(id -u)}
GID=${GID:-$(id -g)}
UID=${UID:-1000}
GID=${GID:-1000}
groupadd -g $GID haze
useradd -u $UID -g $GID haze

11
images/push.sh Normal file
View file

@ -0,0 +1,11 @@
#!/bin/bash
versions=("7.2" "7.3" "7.4" "8.0")
for version in "${versions[@]}"; do
docker push "icewind1991/haze-php:$version"
done
for version in "${versions[@]}"; do
docker push "icewind1991/haze:$version"
done

View file

@ -14,10 +14,10 @@ use tokio::time::{sleep, timeout};
#[derive(Clone, Debug, Eq, PartialEq)]
#[allow(dead_code)]
pub enum PhpVersion {
Latest,
// Php80,
Php80,
Php74,
// Php73,
Php73,
Php72,
}
impl FromStr for PhpVersion {
@ -26,7 +26,11 @@ impl FromStr for PhpVersion {
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"7" => Ok(PhpVersion::Php74),
"7.2" => Ok(PhpVersion::Php72),
"7.3" => Ok(PhpVersion::Php73),
"7.4" => Ok(PhpVersion::Php74),
"8" => Ok(PhpVersion::Php80),
"8.0" => Ok(PhpVersion::Php80),
_ => Err(()),
}
}
@ -36,15 +40,19 @@ impl PhpVersion {
fn image(&self) -> &'static str {
// for now only 7.4
match self {
PhpVersion::Latest => "icewind1991/haze:7.4",
PhpVersion::Php72 => "icewind1991/haze:7.2",
PhpVersion::Php73 => "icewind1991/haze:7.3",
PhpVersion::Php74 => "icewind1991/haze:7.4",
PhpVersion::Php80 => "icewind1991/haze:8.0",
}
}
pub fn name(&self) -> &'static str {
match self {
PhpVersion::Latest => "7.4",
PhpVersion::Php72 => "7.2",
PhpVersion::Php73 => "7.3",
PhpVersion::Php74 => "7.4",
PhpVersion::Php80 => "8.0",
}
}
@ -110,6 +118,6 @@ impl PhpVersion {
impl Default for PhpVersion {
fn default() -> Self {
PhpVersion::Latest
PhpVersion::Php80
}
}