Skip to content

Commit af8ab18

Browse files
committed
Add support for PHP 8.1
1 parent ab1dcdb commit af8ab18

File tree

3 files changed

+159
-3
lines changed

3 files changed

+159
-3
lines changed

.drone.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,56 @@
11
---
22
kind: pipeline
3+
name: php-runtime-8.1
4+
5+
workspace:
6+
base: /workspace
7+
path: src/github.com/bitpoke/stack-runtimes
8+
9+
steps:
10+
- &step
11+
name: setup docker
12+
pull: always
13+
image: docker.io/bitpoke/build:v0.8.0
14+
environment: &baseEnv
15+
TAG_SUFFIX: ${DRONE_BRANCH/master/}
16+
TEST_HOSTNAME: docker
17+
DOCKER_HOST: tcp://docker:2375
18+
commands:
19+
- dockerize -wait http://docker:2375/_ping -timeout 30s
20+
- docker info
21+
- make -C php pull-$DRONE_STAGE_NAME
22+
23+
- <<: *step
24+
name: build image
25+
pull: default
26+
commands:
27+
- make -C php $DRONE_STAGE_NAME
28+
29+
- <<: *step
30+
name: test image
31+
pull: default
32+
commands:
33+
- make -C php test-$DRONE_STAGE_NAME
34+
35+
- <<: *step
36+
name: publish
37+
pull: default
38+
environment:
39+
<<: *baseEnv
40+
DOCKER_USERNAME: bitpokebot
41+
DOCKER_PASSWORD:
42+
from_secret: DOCKER_PASSWORD
43+
commands:
44+
- /usr/local/bin/setup-credentials-helper.sh
45+
- make -C php push-$DRONE_STAGE_NAME
46+
47+
services:
48+
- name: docker
49+
image: docker:20.10.8-dind-rootless
50+
environment:
51+
DOCKER_TLS_CERTDIR: ""
52+
---
53+
kind: pipeline
354
name: php-runtime-8.0
455

556
workspace:

php/Dockerfile-8.1

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
ARG PHP_VERSION=8.1.2
2+
FROM php:${PHP_VERSION}-fpm-buster as php
3+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
4+
ENV PATH="/usr/local/docker/bin:${PATH}"
5+
ENV PHP_VERSION=${PHP_VERSION}
6+
ENV PORT=8080
7+
ENV DOCUMENT_ROOT=/app/html
8+
9+
ENV COMPOSER_VERSION=2.0.11
10+
ENV SUPERVISORD_VERSION=0.6.3
11+
ENV DOCKERIZE_VERSION=2.1.0
12+
# https://github.com/grpc/grpc/issues/13412
13+
ENV GRPC_ENABLE_FORK_SUPPORT=1
14+
ENV GRPC_POLL_STRATEGY=epoll1
15+
# keep wp-cli happy
16+
ENV PAGER=cat
17+
18+
# workaround for https://github.com/docker-library/php/issues/924
19+
ENV PHP_OPENSSL=yes
20+
21+
# configure composer
22+
ENV COMPOSER_CACHE_DIR=/var/lib/composer/cache
23+
ENV COMPOSER_HOME=/var/lib/composer
24+
ENV COMPOSER_NO_INTERACTION=1
25+
26+
# install openresty and minimal requirements
27+
RUN set -ex \
28+
&& apt-get update \
29+
&& apt-get install --no-install-recommends -y gnupg \
30+
&& curl -s https://openresty.org/package/pubkey.gpg | apt-key add - \
31+
&& echo "deb http://openresty.org/package/debian stretch openresty" > /etc/apt/sources.list.d/openresty.list \
32+
&& apt-get update \
33+
&& apt-get install --no-install-recommends -y \
34+
msmtp unzip openresty=1.13* openresty-debug=1.13* libyaml-0-2 libyaml-dev \
35+
less git openssh-client procps libmagickwand-dev \
36+
# we need yaml support for installing extensions
37+
&& pecl install yaml \
38+
&& docker-php-ext-enable --ini-name 50-docker-php-ext-yaml.ini yaml \
39+
&& apt-get autoremove --purge -y libyaml-dev \
40+
&& rm -rf /var/lib/apt/lists/*
41+
42+
COPY docker/build-scripts /usr/local/docker/build-scripts/
43+
44+
RUN set -ex \
45+
&& apt-get update \
46+
&& mkdir -p ${COMPOSER_HOME} ${COMPOSER_CACHE_DIR} \
47+
&& chown www-data:www-data ${COMPOSER_HOME} ${COMPOSER_CACHE_DIR} \
48+
&& chmod 777 ${COMPOSER_HOME} ${COMPOSER_CACHE_DIR} \
49+
&& /usr/local/docker/build-scripts/install-composer \
50+
&& /usr/local/docker/build-scripts/install-dockerize \
51+
&& /usr/local/docker/build-scripts/install-supervisord \
52+
&& /usr/local/docker/build-scripts/install-php-extensions /usr/local/docker/build-scripts/php-extensions.minimal.yaml \
53+
&& rm -rf /var/lib/apt/lists/* /tmp/pear/* ${COMPOSER_CACHE_DIR:?}/*
54+
55+
WORKDIR /app
56+
# prepare rootfs
57+
RUN set -ex \
58+
# symlink generated php.ini
59+
&& ln -sf /usr/local/docker/etc/php.ini /usr/local/etc/php/conf.d/zz-01-custom.ini \
60+
# symlink php.ini from /app/config/php.ini
61+
&& ln -sf /app/config/php.ini /usr/local/etc/php/conf.d/zz-90-app.ini \
62+
# our dummy index
63+
&& mkdir /app/html \
64+
&& { \
65+
echo "<?php phpinfo(); "; \
66+
} | tee /app/html/index.php >&2 \
67+
&& mkdir -p /var/lib/nginx/logs \
68+
&& ln -sf /dev/null /var/lib/nginx/logs/error.log \
69+
&& chown -R www-data:www-data /app \
70+
&& chown -R www-data:www-data /run \
71+
&& chown -R www-data:www-data /var/lib/nginx \
72+
&& chown -R www-data:www-data /var/www
73+
74+
COPY --chown=www-data:www-data ./docker /usr/local/docker
75+
COPY --chown=www-data:www-data ./nginx-lua /usr/local/docker/lib/nginx/lua/
76+
USER www-data:www-data
77+
78+
STOPSIGNAL SIGTERM
79+
EXPOSE 8080
80+
ENTRYPOINT ["/usr/local/docker/bin/docker-entrypoint"]
81+
CMD ["supervisord", "-c", "/usr/local/docker/etc/supervisor.conf"]

php/docker/build-scripts/php-extensions.minimal.yaml

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262

6363
# Install mcrypt for backward compatibility
6464
- name: mcrypt
65+
phpMaxVersion: 8.1
6566
version: 1.0.4
6667
type: pecl
6768
build:
@@ -82,11 +83,19 @@
8283
# install serializers to make them available for the rest of the extensions
8384
- name: igbinary
8485
type: pecl
85-
version: 3.2.6
86+
version: 3.2.7
87+
8688
- name: msgpack
89+
phpMinVersion: 7.4
90+
phpMaxVersion: 8.1
8791
type: pecl
8892
version: 2.1.2
8993

94+
- name: msgpack
95+
phpMinVersion: 8.1
96+
type: pecl
97+
version: 2.2.0RC1
98+
9099
- name: zstd
91100
type: pecl
92101
version: 0.11.0
@@ -99,6 +108,21 @@
99108
version: 3.1.2
100109

101110
- name: memcached
111+
phpMaxVersion: 8.1
112+
type: pecl
113+
version: 3.1.5
114+
build:
115+
depends:
116+
- "libmemcached-dev"
117+
- "zlib1g-dev"
118+
args:
119+
- "--enable-memcached-igbinary"
120+
- "--enable-memcached-msgpack"
121+
- "--enable-memcached-json"
122+
123+
- name: memcached
124+
src: https://github.com/php-memcached-dev/php-memcached/archive/d3b8ce13f13cee3017aa8a00a0cfb2e7709154d8.tar.gz
125+
phpMinVersion: 8.1
102126
type: pecl
103127
version: 3.1.5
104128
build:
@@ -112,14 +136,14 @@
112136

113137
- name: imagick
114138
type: pecl
115-
version: 3.6.0
139+
version: 3.7.0
116140
build:
117141
depends:
118142
- "libmagickwand-dev"
119143

120144
- name: redis
121145
type: pecl
122-
version: 5.3.5
146+
version: 5.3.6
123147
build:
124148
args:
125149
- "--enable-redis-igbinary"

0 commit comments

Comments
 (0)