Skip to content

Commit f3b944a

Browse files
authored
Merge pull request #968 from Automattic/add/php8.4
feat: add PHP 8.4
2 parents fb5c043 + de68ff6 commit f3b944a

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed

.github/workflows/php-fpm.yml

+2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ jobs:
4343
suffix: "82"
4444
- name: "8.3"
4545
suffix: "83"
46+
- name: "8.4"
47+
suffix: "84"
4648
steps:
4749
- name: Check out the repo
4850
uses: actions/checkout@v4

php-fpm/Dockerfile.84

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
FROM ubuntu:24.04@sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30 AS build
2+
RUN \
3+
export DEBIAN_FRONTEND=noninteractive && \
4+
apt-get -q update && \
5+
apt-get -y install eatmydata && \
6+
eatmydata apt-get install -y curl lsb-release ca-certificates gnupg --no-install-recommends && \
7+
echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list && \
8+
curl -sSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x71DAEAAB4AD4CAB6" | gpg --dearmor > /etc/apt/trusted.gpg.d/ppa-ondrej-php.gpg && \
9+
eatmydata apt-get -q update && \
10+
eatmydata apt-get install -y php8.4-dev php8.4-xml g++ cmake make libglib2.0-dev zlib1g-dev libpcre3-dev libssl-dev libzstd-dev libmysqlclient-dev && \
11+
eatmydata apt-get install -y php-pear --no-install-recommends && \
12+
pecl install timezonedb && \
13+
curl -SL "https://github.com/mydumper/mydumper/archive/refs/tags/v0.16.3-6.tar.gz" -o mydumper.tar.gz && \
14+
echo "6af51d6e18fdf318710ba0c3d87f6ac7 mydumper.tar.gz" | md5sum -c - && \
15+
mkdir /mydumper && \
16+
tar -xzf mydumper.tar.gz --strip-components=1 -C /mydumper && \
17+
cd /mydumper && cmake . && make && make install && rm -rf /mydumper && rm -f mydumper.tar.gz && \
18+
rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*
19+
20+
FROM ubuntu:24.04@sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30
21+
22+
# We lack: newrelic
23+
RUN \
24+
export DEBIAN_FRONTEND=noninteractive && \
25+
apt-get -q update && \
26+
apt-get -y install eatmydata && \
27+
mkdir -p /usr/lib/libeatmydata && ln -s -t /usr/lib/libeatmydata/ /usr/lib/$(uname -m)-linux-gnu/libeatmydata.so* && \
28+
eatmydata apt-get -y upgrade && \
29+
eatmydata apt-get install -y curl lsb-release ca-certificates gnupg libmcrypt4 zlib1g libmemcached11 libgraphicsmagick-q16-3 --no-install-recommends && \
30+
echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list && \
31+
curl -sSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x71DAEAAB4AD4CAB6" | gpg --dearmor > /etc/apt/trusted.gpg.d/ppa-ondrej-php.gpg && \
32+
eatmydata apt-get -q update && \
33+
eatmydata apt-get install -y less git jq mysql-client libmysqlclient21 openssl wget vim nano libpcre3 libglib2.0-0 libatomic1 && \
34+
eatmydata apt-get install -y ghostscript msmtp zstd --no-install-recommends && \
35+
eatmydata apt-get install -y --no-install-recommends \
36+
php8.4-cli php8.4-fpm \
37+
php8.4-apcu php8.4-bcmath php8.4-curl php8.4-gd php8.4-gmagick php8.4-gmp php8.4-gnupg php8.4-igbinary \
38+
php8.4-intl php8.4-mbstring php8.4-mcrypt php8.4-memcache php8.4-memcached php8.4-mysql php8.4-soap \
39+
php8.4-sqlite3 php8.4-ssh2 php8.4-xdebug php8.4-xml php8.4-zip && \
40+
eatmydata apt-get install -y php-pear --no-install-recommends && \
41+
phpdismod ffi gettext readline sysvmsg xsl xdebug && \
42+
rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* && \
43+
eatmydata apt-get autoremove --purge -y && \
44+
ln -s /usr/sbin/php-fpm8.4 /usr/sbin/php-fpm
45+
46+
RUN \
47+
deluser --remove-home --quiet ubuntu && \
48+
usermod -d /home/www-data -s /bin/bash www-data && \
49+
install -d -D -m 0750 -o www-data -g www-data /home/www-data && \
50+
install -d -D -m 0755 -o www-data -g www-data /run/php && \
51+
install -d -D -m 0755 -o root -g root /usr/local/share
52+
53+
RUN \
54+
wget -O /usr/local/bin/phpunit https://phar.phpunit.de/phpunit-9.phar && chmod 0755 /usr/local/bin/phpunit && \
55+
wget -O /usr/local/bin/wp.phar https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \
56+
php -r '(new Phar("/usr/local/bin/wp.phar"))->extractTo("/usr/local/share/wp");' && \
57+
mv /usr/local/bin/wp.phar /usr/local/bin/wp && \
58+
chmod 0755 /usr/local/bin/wp && \
59+
wget -q https://getcomposer.org/installer -O - | php -- --install-dir=/usr/bin/ --filename=composer
60+
61+
ENV WP_CLI_CONFIG_PATH=/config/wp-cli.yaml
62+
63+
RUN \
64+
ARCH="$(arch)"; \
65+
LATEST=$(curl -w '%{url_effective}' -ILsS https://github.com/Automattic/cron-control-runner/releases/latest -o /dev/null | sed -e 's|^.*/||'); \
66+
if [ "${ARCH}" = "arm64" ] || [ "${ARCH}" = "aarch64" ]; then \
67+
ARCH="arm64"; \
68+
elif [ "${ARCH}" = "x86_64" ] || [ "${ARCH}" = "amd64" ]; then \
69+
ARCH="amd64"; \
70+
else \
71+
echo "(!) Unsupported architecture: ${ARCH}"; \
72+
exit 1; \
73+
fi && \
74+
curl -SL "https://github.com/Automattic/cron-control-runner/releases/download/${LATEST}/cron-control-runner-linux-${ARCH}" -o /usr/bin/cron-control-runner && \
75+
chmod +x /usr/bin/cron-control-runner
76+
77+
COPY --from=build /usr/lib/php/20240924/timezonedb.so /usr/lib/php/20240924/
78+
COPY --from=build /usr/local/bin/mydumper /usr/local/bin/myloader /usr/local/bin/
79+
COPY rootfs/ /
80+
COPY rootfs-php/ /etc/php/8.4/
81+
82+
RUN phpenmod timezonedb
83+
84+
WORKDIR /var/www/html
85+
STOPSIGNAL SIGQUIT
86+
EXPOSE 9000
87+
ENTRYPOINT ["docker-php-entrypoint"]
88+
CMD ["run.sh"]

0 commit comments

Comments
 (0)