mirror of
https://github.com/devilbox/docker-php-fpm.git
synced 2025-12-10 11:01:14 +00:00
160 lines
4.6 KiB
Docker
160 lines
4.6 KiB
Docker
# vi: ft=dockerfile
|
|
# Auto-generated via Ansible: edit ./ansible/DOCKERFILES/Dockerfile-mods.j2 instead.
|
|
FROM devilbox/php-fpm:8.2-base as builder
|
|
|
|
|
|
###
|
|
### Install
|
|
###
|
|
RUN set -eux \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get update \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
|
|
# Build tools
|
|
autoconf \
|
|
bison \
|
|
bisonc++ \
|
|
ca-certificates \
|
|
curl \
|
|
dpkg-dev \
|
|
file \
|
|
flex \
|
|
g++ \
|
|
gcc \
|
|
git \
|
|
lemon \
|
|
libc-client-dev \
|
|
libc-dev \
|
|
libcurl4-openssl-dev \
|
|
libssl-dev \
|
|
make \
|
|
patch \
|
|
pkg-config \
|
|
re2c \
|
|
xz-utils \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
|
|
RUN set -eux \
|
|
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini
|
|
|
|
|
|
###
|
|
### Install and enable PHP modules
|
|
###
|
|
# Enable ffi if it exists
|
|
RUN set -eux \
|
|
&& if [ -f /usr/local/etc/php/conf.d/docker-php-ext-ffi.ini ]; then \
|
|
echo "ffi.enable = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-ffi.ini; \
|
|
fi
|
|
|
|
|
|
|
|
# Fix php.ini settings for enabled extensions
|
|
RUN set -eux \
|
|
&& find "$(php -r 'echo ini_get("extension_dir");')/" -type f -exec chmod +x {} \;
|
|
|
|
# Fix oracle dir for images that don't have oci installed
|
|
RUN set -eux \
|
|
&& mkdir -p /usr/lib/oracle/
|
|
|
|
# Shrink everything down
|
|
RUN set -eux \
|
|
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
|
|
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
|
|
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
|
|
|
|
|
|
|
|
# Auto-generated via Ansible: edit ./ansible/DOCKERFILES/Dockerfile-mods.j2 instead.
|
|
FROM devilbox/php-fpm:8.2-base as final
|
|
MAINTAINER "cytopia" <cytopia@everythingcli.org>
|
|
|
|
###
|
|
### Labels
|
|
###
|
|
# https://github.com/opencontainers/image-spec/blob/master/annotations.md
|
|
#LABEL "org.opencontainers.image.created"=""
|
|
#LABEL "org.opencontainers.image.version"=""
|
|
#LABEL "org.opencontainers.image.revision"=""
|
|
LABEL "maintainer"="cytopia <cytopia@everythingcli.org>"
|
|
LABEL "org.opencontainers.image.authors"="cytopia <cytopia@everythingcli.org>"
|
|
LABEL "org.opencontainers.image.url"="https://github.com/devilbox/docker-php-fpm"
|
|
LABEL "org.opencontainers.image.documentation"="https://github.com/devilbox/docker-php-fpm"
|
|
LABEL "org.opencontainers.image.source"="https://github.com/devilbox/docker-php-fpm"
|
|
LABEL "org.opencontainers.image.vendor"="devilbox"
|
|
LABEL "org.opencontainers.image.licenses"="MIT"
|
|
LABEL "org.opencontainers.image.ref.name"="8.2-mods"
|
|
LABEL "org.opencontainers.image.title"="PHP-FPM 8.2-mods"
|
|
LABEL "org.opencontainers.image.description"="PHP-FPM 8.2-mods"
|
|
|
|
|
|
###
|
|
### Install runtime libraries
|
|
###
|
|
RUN set -eux \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get update \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
|
|
ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
\
|
|
&& update-ca-certificates
|
|
|
|
|
|
###
|
|
### Copy artifacts from builder
|
|
###
|
|
ARG EXT_DIR
|
|
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
|
|
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
|
|
COPY --from=builder /usr/local/bin/ /usr/local/bin/
|
|
COPY --from=builder /usr/local/lib/ /usr/local/lib/
|
|
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
|
|
|
|
|
|
###
|
|
### Post Install executions
|
|
###
|
|
###
|
|
### Verify
|
|
###
|
|
RUN set -eux \
|
|
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
|
|
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^8.2' \
|
|
&& /usr/local/sbin/php-fpm --test \
|
|
\
|
|
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
|
|
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
|
|
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
|
|
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
|
|
\
|
|
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
|
|
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
|
|
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
|
|
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
|
|
&& rm -f /usr/local/etc/php/php.ini \
|
|
\
|
|
&& php -m | grep -oiE '^hash$' \
|
|
&& php-fpm -m | grep -oiE '^hash$' \
|
|
&& true
|
|
|
|
|
|
# Deactive PSR and Phalcon:
|
|
# https://github.com/devilbox/docker-php-fpm/issues/201
|
|
RUN set -eux \
|
|
&& rm -f /usr/local/etc/php/conf.d/docker-php-ext-phalcon.ini || true \
|
|
&& rm -f /usr/local/etc/php/conf.d/docker-php-ext-psr.ini || true \
|
|
|
|
|
|
###
|
|
### Ports
|
|
###
|
|
EXPOSE 9000
|
|
|
|
|
|
###
|
|
### Entrypoint
|
|
###
|
|
CMD ["/usr/local/sbin/php-fpm"]
|
|
ENTRYPOINT ["/docker-entrypoint.sh"]
|