Skip to content

Commit ccd3e3a

Browse files
committed
Added php 8.1 builds to be ready
1 parent a1edb25 commit ccd3e3a

File tree

15 files changed

+2686
-0
lines changed

15 files changed

+2686
-0
lines changed

php8.1-fpm/alpine/Dockerfile

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
FROM php:8.1-fpm-alpine
2+
LABEL maintainer="ITK Dev <[email protected]>"
3+
4+
ENV PHP_OPCACHE_ENABLED="1" \
5+
PHP_OPCACHE_VALIDATE_TIMESTAMPS="1" \
6+
PHP_OPCACHE_MAX_ACCELERATED_FILES="20000" \
7+
PHP_OPCACHE_MEMORY_CONSUMPTION="64" \
8+
PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10" \
9+
PHP_APCU_MEMORY_SIZE="16M" \
10+
PHP_MAX_EXECUTION_TIME="30" \
11+
PHP_MEMORY_LIMIT="128M" \
12+
PHP_POST_MAX_SIZE="8M" \
13+
PHP_UPLOAD_MAX_FILESIZE="2M" \
14+
PHP_TIMEZONE="Europe/Copenhagen" \
15+
PHP_PM_TYPE="dynamic" \
16+
PHP_PM_MAX_CHILDREN="40" \
17+
PHP_PM_MAX_REQUESTS="0" \
18+
PHP_PM_START_SERVERS="5" \
19+
PHP_PM_MIN_SPARE_SERVERS="5" \
20+
PHP_PM_MAX_SPARE_SERVERS="8" \
21+
PHP_REQUEST_SLOWLOG_TIMEOUT="0" \
22+
PHP_SLOWLOG="/var/log/php-slow.log" \
23+
PHP_USER="deploy" \
24+
PHP_GROUP="deploy"
25+
26+
RUN apk --update add --no-cache \
27+
libxslt-dev \
28+
libzip-dev \
29+
libpng-dev \
30+
gettext-dev \
31+
git \
32+
unzip \
33+
icu-dev \
34+
openldap-dev \
35+
libmcrypt-dev \
36+
&& docker-php-ext-install -j$(nproc) \
37+
bcmath \
38+
gd \
39+
gettext \
40+
intl \
41+
ldap \
42+
pdo_mysql \
43+
mysqli \
44+
opcache \
45+
pdo_mysql \
46+
sysvsem \
47+
soap \
48+
xsl \
49+
zip
50+
51+
RUN apk --update add --no-cache --virtual .build-deps autoconf g++ make \
52+
&& pecl install redis \
53+
&& docker-php-ext-enable redis \
54+
&& apk del .build-deps
55+
56+
# Install composer (both composer version as set symlink to right version in entry-point)
57+
COPY --from=composer:1 /usr/bin/composer /usr/bin/composer1
58+
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer2
59+
60+
# Set default composer version (can be overriden in entry-point via COMPOSER_VERSION env)
61+
RUN ln -fs /usr/bin/composer1 /usr/local/bin/composer
62+
63+
# Added cache tool.
64+
ADD https://gordalina.github.io/cachetool/downloads/cachetool.phar /usr/local/bin/cachetool
65+
RUN chmod +x /usr/local/bin/cachetool
66+
67+
# Use default PHP production configuration.
68+
RUN mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini
69+
70+
# Copy custom PHP configuration.
71+
COPY etc/php/conf.d/opcache.ini /usr/local/etc/php/conf.d/20-opcache.ini
72+
COPY etc/php/conf.d/php.ini /usr/local/etc/php/conf.d/20-php.ini
73+
74+
# Custom FPM configuration.
75+
COPY etc/php-fpm.d/fpm.ini /usr/local/etc/php-fpm.d/zz-fpm-docker.conf
76+
77+
# Add deploy use to match server.
78+
RUN addgroup -g 1001 deploy \
79+
&& adduser -G deploy -u 1001 -H deploy -D
80+
81+
EXPOSE 9000
82+
83+
WORKDIR /app
84+
85+
COPY docker-entrypoint.sh /usr/local/bin/
86+
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
87+
88+
CMD [ "docker-entrypoint.sh" ]
89+
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/sh
2+
set -e
3+
4+
# Add docker host domain to hosts file
5+
if [ ! -z "${DOCKER_HOST_DOMAIN}" ]; then
6+
echo $(getent hosts host.docker.internal | cut -d" " -f1) ${DOCKER_HOST_DOMAIN} >> /etc/hosts
7+
fi
8+
9+
## Set selected composer version. Default version 1.
10+
if [ ! -z "${COMPOSER_VERSION}" ]; then
11+
if [ "${COMPOSER_VERSION}" = "1" ]; then
12+
ln -fs /usr/bin/composer1 /usr/local/bin/composer
13+
else
14+
ln -fs /usr/bin/composer2 /usr/local/bin/composer
15+
fi
16+
else
17+
ln -fs /usr/bin/composer1 /usr/local/bin/composer
18+
fi
19+
20+
## Start the php FPM process.
21+
echo "Starting PHP 8.1 FPM"
22+
/usr/local/bin/docker-php-entrypoint php-fpm
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
[www]
2+
pm = ${PHP_PM_TYPE}
3+
pm.max_children = ${PHP_PM_MAX_CHILDREN}
4+
pm.start_servers = ${PHP_PM_START_SERVERS}
5+
pm.min_spare_servers = ${PHP_PM_MIN_SPARE_SERVERS}
6+
pm.max_spare_servers = ${PHP_PM_MAX_SPARE_SERVERS}
7+
pm.max_requests = ${PHP_PM_MAX_REQUESTS}
8+
9+
request_slowlog_timeout = ${PHP_REQUEST_SLOWLOG_TIMEOUT}
10+
slowlog = ${PHP_SLOWLOG}
11+
12+
; Enable the FPM status page
13+
pm.status_path = /status
14+
15+
user = ${PHP_USER}
16+
group = ${PHP_GROUP}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[opcache]
2+
opcache.enable=${PHP_OPCACHE_ENABLED}
3+
opcache.revalidate_freq=0
4+
opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}
5+
opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}
6+
opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}
7+
opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}
8+
opcache.interned_strings_buffer=16
9+
opcache.fast_shutdown=1
10+
11+
# See https://github.com/symfony/symfony/pull/29349
12+
opcache.optimization_level=0xFFFFFFEF
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Real path configuration
2+
realpath_cache_size = 4096k
3+
realpath_cache_ttl = 600
4+
5+
expose_php = Off
6+
max_execution_time = ${PHP_MAX_EXECUTION_TIME}
7+
memory_limit = ${PHP_MEMORY_LIMIT}
8+
9+
post_max_size = ${PHP_POST_MAX_SIZE}
10+
upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}
11+
12+
date.timezone = ${PHP_TIMEZONE}

php8.1-fpm/focal/Dockerfile

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
FROM ubuntu:20.04
2+
LABEL maintainer "ITK Dev <[email protected]>"
3+
4+
ENV PHP_VERSION 8.1
5+
6+
# Ensure packages are avaiable.
7+
RUN apt-get update
8+
9+
RUN DEBIAN_FRONTEND=noninteractive \
10+
apt-get install -y \
11+
apt-utils
12+
13+
RUN DEBIAN_FRONTEND=noninteractive \
14+
apt-get install -y language-pack-en-base \
15+
software-properties-common \
16+
&& locale-gen en_US.UTF-8
17+
18+
# Add php repositories
19+
RUN DEBIAN_FRONTEND=noninteractive LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php \
20+
&& apt-get update
21+
22+
# Clean up
23+
RUN DEBIAN_FRONTEND=noninteractive \
24+
apt-get remove -y software-properties-common language-pack-en-base \
25+
&& apt-get autoremove -y
26+
27+
RUN DEBIAN_FRONTEND=noninteractive \
28+
apt-get install -y \
29+
php${PHP_VERSION} \
30+
php${PHP_VERSION}-dev \
31+
php${PHP_VERSION}-cli \
32+
php${PHP_VERSION}-common \
33+
php${PHP_VERSION}-curl \
34+
php${PHP_VERSION}-fpm \
35+
php${PHP_VERSION}-gd \
36+
php${PHP_VERSION}-mbstring \
37+
php${PHP_VERSION}-mysql \
38+
php${PHP_VERSION}-opcache \
39+
php${PHP_VERSION}-readline \
40+
php${PHP_VERSION}-soap \
41+
php${PHP_VERSION}-xml \
42+
php${PHP_VERSION}-xsl \
43+
php${PHP_VERSION}-zip \
44+
php${PHP_VERSION}-dev \
45+
php${PHP_VERSION}-xdebug \
46+
php${PHP_VERSION}-intl \
47+
php${PHP_VERSION}-bcmath \
48+
php${PHP_VERSION}-sqlite3 \
49+
php${PHP_VERSION}-amqp \
50+
php${PHP_VERSION}-imagick \
51+
php${PHP_VERSION}-memcached \
52+
php${PHP_VERSION}-mongodb \
53+
php${PHP_VERSION}-apcu \
54+
php${PHP_VERSION}-redis \
55+
php-pear \
56+
libmcrypt-dev \
57+
libreadline-dev \
58+
mysql-client \
59+
unzip \
60+
git \
61+
imagemagick \
62+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
63+
64+
COPY etc/ /etc/
65+
66+
# Install composer (both composer version as set symlink to right version in entry-point)
67+
COPY --from=composer:1 /usr/bin/composer /usr/bin/composer1
68+
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer2
69+
70+
# Set default composer version (can be overriden in entry-point via COMPOSER_VERSION env)
71+
RUN ln -fs /usr/bin/composer1 /usr/local/bin/composer
72+
73+
# Add mhsendmail for mailhog
74+
ADD https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 /usr/local/bin/mhsendmail
75+
RUN chmod +x /usr/local/bin/mhsendmail
76+
77+
# Install configuration template handler
78+
ADD https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-linux-amd64 /usr/local/bin/confd
79+
RUN chmod +x /usr/local/bin/confd
80+
81+
EXPOSE 9000
82+
83+
WORKDIR /app
84+
85+
COPY docker-entrypoint.sh /usr/local/bin/
86+
CMD [ "docker-entrypoint.sh" ]
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Add docker host domain to hosts file
5+
if [ ! -z "${DOCKER_HOST_DOMAIN}" ]; then
6+
echo $(getent hosts host.docker.internal | cut -d" " -f1) ${DOCKER_HOST_DOMAIN} >> /etc/hosts
7+
fi
8+
9+
# Set xdebug remote host to docker host ip.
10+
if [ ! -z "${PHP_XDEBUG}" ]; then
11+
export PHP_XDEBUG_REMOTE_HOST=$(getent hosts host.docker.internal | cut -d" " -f1)
12+
fi
13+
14+
## Run templates with configuration.
15+
/usr/local/bin/confd --onetime --backend env --confdir /etc/confd
16+
17+
## Set selected composer version. Default version 2.
18+
if [ ! -z "${COMPOSER_VERSION}" ]; then
19+
if [ "${COMPOSER_VERSION}" = "1" ]; then
20+
ln -fs /usr/bin/composer1 /usr/local/bin/composer
21+
else
22+
ln -fs /usr/bin/composer2 /usr/local/bin/composer
23+
fi
24+
else
25+
ln -fs /usr/bin/composer2 /usr/local/bin/composer
26+
fi
27+
28+
## Start the php FPM process.
29+
echo "Starting PHP 8.1 FPM"
30+
php-fpm8.1 -F --pid /var/run/php/php-fpm8.1.pid -y /etc/php/8.1/fpm/php-fpm.conf
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[template]
2+
src = "php.ini.tmpl"
3+
dest = "/etc/php/8.1/fpm/php.ini"
4+
mode = "0644"
5+
keys = [
6+
"/php"
7+
]
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[template]
2+
src = "30-sendmail.ini.tmpl"
3+
dest = "/etc/php/8.1/fpm/conf.d/30-sendmail.ini"
4+
mode = "0644"
5+
keys = [
6+
"/sendmail"
7+
]
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[template]
2+
src = "30-sendmail.ini.tmpl"
3+
dest = "/etc/php/8.1/cli/conf.d/30-sendmail.ini"
4+
mode = "0644"
5+
keys = [
6+
"/sendmail"
7+
]

0 commit comments

Comments
 (0)