-
Notifications
You must be signed in to change notification settings - Fork 174
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Add support for PHP|8.2 * Add support for PHP|8.3 * typo in version * fixing gpg keys * version fix * fix duplicate buster file issue * fix installPrereqs issue * Add support for PHP|8.3 * nit fix * updating base runtime tag * update sqlsrv * update 8.3.3 sha * Remove imagick from php|8.3 * remove imagick from PHP|8.3 * PHP|8.3.3 update base tag * Add bookworm support for PHP|8.3.3 * add bookworm for php|8.3.3 * adding common base dockerfile for bookworm * add 8.3 bookworm job * update service connection * update debian repo url * test|8.3 something * update ms packages repo * update packages * test packages php|8.3 * update 83 bookworm * rebase php|8.3 bookworm * update release template for a temporary run * temp run * Generate php base images * Update base tag | PHP|8.3.3 * Update base tag | Php-fpm|8.3.3 * test cases | php | 8.3 * update tests | php | 8.3 * tests | php | 8.3 * test cases | php|8.3 * php | 8.3 tests * test cases | php | 8.3.3 * Run PHP|8.3 Tests * php|tests | 8.3.3 * php|8.3.3 tests * add tests | php | 8.3.3 * update php|8.3.3 to 8.3.4 * update version | php | 8.3.4 * update version 8.3.3 to 8.3.4 for php * update keys for php|8.3.4 * PHP|8.3.4 | Update Base Tag * Version updates | php | 8.3.4 * address comments | php|8.3.4 * address comments | php|8.3.4 * update ltsVersions dockerfile | php|8.3 * php|8.3, ltsDockerfile * php composer | php|8.3.4 --------- Co-authored-by: root <root@Akshay-D22.fareast.corp.microsoft.com>
- Loading branch information
1 parent
b44e928
commit e1852c7
Showing
50 changed files
with
2,926 additions
and
60 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# Build PHP 8.3 | ||
FROM oryxdevmcr.azurecr.io/private/oryx/php-build-prereqs AS php83-build | ||
RUN set -eux && . /php/__phpVersions.sh && PHP_VERSION=$PHP83_VERSION GPG_KEYS=$PHP83_KEYS PHP_SHA256=$PHP83_TAR_SHA256 /php/build.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,245 @@ | ||
ARG DEBIAN_FLAVOR | ||
# From https://github.com/docker-library/php.git | ||
FROM oryxdevmcr.azurecr.io/private/oryx/php-fpm-run-base-${DEBIAN_FLAVOR} | ||
ARG IMAGES_DIR=/tmp/oryx/images | ||
|
||
# Install the Microsoft SQL Server PDO driver on supported versions only. | ||
# - https://docs.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac | ||
# - https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server | ||
RUN set -eux \ | ||
&& apt-get update \ | ||
&& apt-get install -y --no-install-recommends \ | ||
gnupg2 \ | ||
apt-transport-https \ | ||
&& curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ | ||
&& curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list \ | ||
&& apt-get update \ | ||
&& ACCEPT_EULA=Y apt-get install -y msodbcsql17 msodbcsql18=18.1.2.1-1 odbcinst1debian2=2.3.7 odbcinst=2.3.7 unixodbc=2.3.7 unixodbc-dev=2.3.7 | ||
|
||
ENV PHP_INI_DIR /usr/local/etc/php | ||
RUN set -eux; \ | ||
mkdir -p "$PHP_INI_DIR/conf.d"; \ | ||
# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743) | ||
[ ! -d /var/www/html ]; \ | ||
mkdir -p /var/www/html; \ | ||
chown www-data:www-data /var/www/html; \ | ||
chmod 777 /var/www/html | ||
|
||
##<autogenerated>## | ||
ENV PHP_EXTRA_CONFIGURE_ARGS --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi ac_cv_func_mmap=no | ||
##</autogenerated>## | ||
|
||
# Apply stack smash protection to functions using local buffers and alloca() | ||
# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64) | ||
# Enable optimization (-O2) | ||
# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default) | ||
# Adds GNU HASH segments to generated executables (this is used if present, and is much faster than sysv hash; in this configuration, sysv hash is also generated) | ||
# https://github.com/docker-library/php/issues/272 | ||
# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php) | ||
ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" | ||
ENV PHP_CPPFLAGS="$PHP_CFLAGS" | ||
ENV PHP_LDFLAGS="-Wl,-O1 -Wl,--hash-style=both -pie" | ||
|
||
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC AFD8691FDAEDF03BDF6E460563F15A9B715376CA C28D937575603EB4ABB725861C0779DC5C0A9DE4 | ||
|
||
ENV PHP_VERSION 8.3.4 | ||
ENV PHP_URL="https://www.php.net/get/php-8.3.4.tar.xz/from/this/mirror" PHP_ASC_URL="https://www.php.net/get/php-8.3.4.tar.xz.asc/from/this/mirror" | ||
ENV PHP_SHA256="39a337036a546e5c28aea76cf424ac172db5156bd8a8fd85252e389409a5ba63" PHP_MD5="" | ||
|
||
RUN set -eux; \ | ||
\ | ||
savedAptMark="$(apt-mark showmanual)"; \ | ||
apt-get update; \ | ||
apt-get install -y --no-install-recommends gnupg dirmngr; \ | ||
rm -rf /var/lib/apt/lists/*; \ | ||
\ | ||
mkdir -p /usr/src; \ | ||
cd /usr/src; \ | ||
\ | ||
curl -fsSL -o php.tar.xz "$PHP_URL"; \ | ||
\ | ||
if [ -n "$PHP_SHA256" ]; then \ | ||
echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \ | ||
fi; \ | ||
if [ -n "$PHP_MD5" ]; then \ | ||
echo "$PHP_MD5 *php.tar.xz" | md5sum -c -; \ | ||
fi; \ | ||
\ | ||
if [ -n "$PHP_ASC_URL" ]; then \ | ||
curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \ | ||
export GNUPGHOME="$(mktemp -d)"; \ | ||
${IMAGES_DIR}/receiveGpgKeys.sh $GPG_KEYS; \ | ||
gpg --batch --verify php.tar.xz.asc php.tar.xz; \ | ||
gpgconf --kill all; \ | ||
rm -rf "$GNUPGHOME"; \ | ||
fi; \ | ||
\ | ||
apt-mark auto '.*' > /dev/null; \ | ||
apt-mark manual $savedAptMark > /dev/null; | ||
|
||
COPY docker-php-source /usr/local/bin/ | ||
|
||
RUN set -eux; \ | ||
\ | ||
|
||
savedAptMark="$(apt-mark showmanual)"; \ | ||
apt-get update; \ | ||
apt-get install -y --no-install-recommends \ | ||
libargon2-dev \ | ||
libcurl4-openssl-dev \ | ||
libedit-dev \ | ||
libonig-dev \ | ||
libsodium-dev \ | ||
libsqlite3-dev \ | ||
libssl-dev \ | ||
libxml2-dev \ | ||
zlib1g-dev \ | ||
${PHP_EXTRA_BUILD_DEPS:-} \ | ||
; \ | ||
rm -rf /var/lib/apt/lists/*; \ | ||
\ | ||
export \ | ||
CFLAGS="$PHP_CFLAGS" \ | ||
CPPFLAGS="$PHP_CPPFLAGS" \ | ||
LDFLAGS="$PHP_LDFLAGS" \ | ||
; \ | ||
#which docker-php-source; \ | ||
awk '{ sub("\r$", ""); print }' /usr/local/bin/docker-php-source > /usr/local/bin/docker-php-source_new; \ | ||
cat /usr/local/bin/docker-php-source_new; \ | ||
chmod +x /usr/local/bin/docker-php-source_new ; \ | ||
docker-php-source_new extract; \ | ||
ls -l /usr/src/; \ | ||
cd /usr/src/php; \ | ||
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ | ||
debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ | ||
# https://bugs.php.net/bug.php?id=74125 | ||
if [ ! -d /usr/include/curl ]; then \ | ||
ln -sT "/usr/include/$debMultiarch/curl" /usr/local/include/curl; \ | ||
fi; \ | ||
./configure \ | ||
--build="$gnuArch" \ | ||
--with-config-file-path="$PHP_INI_DIR" \ | ||
--with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \ | ||
\ | ||
# make sure invalid --configure-flags are fatal errors intead of just warnings | ||
--enable-option-checking=fatal \ | ||
\ | ||
# https://github.com/docker-library/php/issues/439 | ||
--with-mhash \ | ||
\ | ||
# --enable-ftp is included here because ftp_ssl_connect() needs ftp to be compiled statically (see https://github.com/docker-library/php/issues/236) | ||
--enable-ftp \ | ||
# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195) | ||
--enable-mbstring \ | ||
# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself) | ||
--enable-mysqlnd \ | ||
# https://wiki.php.net/rfc/argon2_password_hash (7.2+) | ||
--with-password-argon2 \ | ||
# https://wiki.php.net/rfc/libsodium | ||
--with-sodium=shared \ | ||
# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109) | ||
--with-pdo-sqlite=/usr \ | ||
--with-sqlite3=/usr \ | ||
\ | ||
--with-curl \ | ||
--with-libedit \ | ||
--with-openssl \ | ||
--with-zlib \ | ||
\ | ||
# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear") and will be removed in PHP 8+; see also https://github.com/docker-library/php/issues/846#issuecomment-505638494 | ||
--with-pear \ | ||
\ | ||
# bundled pcre does not support JIT on s390x | ||
# https://manpages.debian.org/stretch/libpcre3-dev/pcrejit.3.en.html#AVAILABILITY_OF_JIT_SUPPORT | ||
$(test "$gnuArch" = 's390x-linux-gnu' && echo '--without-pcre-jit') \ | ||
--with-libdir="lib/$debMultiarch" \ | ||
\ | ||
${PHP_EXTRA_CONFIGURE_ARGS:-} \ | ||
; \ | ||
make -j "$(nproc)"; \ | ||
find -type f -name '*.a' -delete; \ | ||
make install; \ | ||
find /usr/local/bin /usr/local/sbin -type f -executable -exec strip --strip-all '{}' + || true; \ | ||
make clean; \ | ||
\ | ||
# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable) | ||
cp -v php.ini-* "$PHP_INI_DIR/"; \ | ||
\ | ||
cd /; \ | ||
docker-php-source_new delete; \ | ||
\ | ||
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies | ||
apt-mark auto '.*' > /dev/null; \ | ||
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \ | ||
find /usr/local -type f -executable -exec ldd '{}' ';' \ | ||
| awk '/=>/ { print $(NF-1) }' \ | ||
| sort -u \ | ||
| xargs -r dpkg-query --search \ | ||
| cut -d: -f1 \ | ||
| sort -u \ | ||
| xargs -r apt-mark manual \ | ||
; \ | ||
# update pecl channel definitions https://github.com/docker-library/php/issues/443 | ||
pecl update-channels; \ | ||
rm -rf /tmp/pear ~/.pearrc; \ | ||
# smoke test | ||
php --version | ||
|
||
COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/ | ||
RUN chmod +x /usr/local/bin/docker-php-ext-* | ||
RUN chmod +x /usr/local/bin/docker-php-entrypoint | ||
|
||
# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598) | ||
RUN docker-php-ext-enable sodium | ||
|
||
ENTRYPOINT ["docker-php-entrypoint"] | ||
##<autogenerated>## | ||
WORKDIR /var/www/html | ||
|
||
RUN set -eux; \ | ||
cd /usr/local/etc; \ | ||
if [ -d php-fpm.d ]; then \ | ||
# for some reason, upstream's php-fpm.conf.default has "include=NONE/etc/php-fpm.d/*.conf" | ||
sed 's!=NONE/!=!g' php-fpm.conf.default | tee php-fpm.conf > /dev/null; \ | ||
cp php-fpm.d/www.conf.default php-fpm.d/www.conf; \ | ||
else \ | ||
# PHP 5.x doesn't use "include=" by default, so we'll create our own simple config that mimics PHP 7+ for consistency | ||
mkdir php-fpm.d; \ | ||
cp php-fpm.conf.default php-fpm.d/www.conf; \ | ||
{ \ | ||
echo '[global]'; \ | ||
echo 'include=etc/php-fpm.d/*.conf'; \ | ||
} | tee php-fpm.conf; \ | ||
fi; \ | ||
{ \ | ||
echo '[global]'; \ | ||
echo 'error_log = /proc/self/fd/2'; \ | ||
echo; echo '; https://github.com/docker-library/php/pull/725#issuecomment-443540114'; echo 'log_limit = 8192'; \ | ||
echo; \ | ||
echo '[www]'; \ | ||
echo '; if we send this to /proc/self/fd/1, it never appears'; \ | ||
echo 'access.log = /proc/self/fd/2'; \ | ||
echo; \ | ||
echo 'clear_env = no'; \ | ||
echo; \ | ||
echo '; Ensure worker stdout and stderr are sent to the main error log.'; \ | ||
echo 'catch_workers_output = yes'; \ | ||
echo 'decorate_workers_output = no'; \ | ||
} | tee php-fpm.d/docker.conf; \ | ||
{ \ | ||
echo '[global]'; \ | ||
echo 'daemonize = no'; \ | ||
echo; \ | ||
echo '[www]'; \ | ||
echo 'listen = 9000'; \ | ||
} | tee php-fpm.d/zz-docker.conf | ||
|
||
RUN rm -rf /var/lib/apt/lists/* | ||
|
||
# Override stop signal to stop process gracefully | ||
# https://github.com/php/php-src/blob/17baa87faddc2550def3ae7314236826bc1b1398/sapi/fpm/php-fpm.8.in#L163 | ||
STOPSIGNAL SIGQUIT | ||
|
||
EXPOSE 9000 | ||
CMD ["php-fpm"] | ||
##</autogenerated>## |
Oops, something went wrong.