commit 77bf89351cce8a0d7a98fc6a7889707a0c456be678e004726ee0de1abb3fce61 Author: Dan Čermák Date: Wed Jan 1 14:18:22 2025 +0000 [info=67bd32b3d87dc1eb5ac5713e494f0c98] OBS-URL: https://build.opensuse.org/package/show/devel:BCI:Tumbleweed/php-apache8-image?expand=0&rev=208 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b5eb09e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: MIT + +# Copyright (c) 2025 SUSE LLC + +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. + +# The content of THIS FILE IS AUTOGENERATED and should not be manually modified. +# It is maintained by the BCI team and generated by +# https://github.com/SUSE/BCI-dockerfile-generator + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# You can contact the BCI team via https://github.com/SUSE/bci/discussions + +#!UseOBSRepositories + +#!BuildTag: opensuse/bci/php-apache:%%php_version%%-%RELEASE% +#!BuildTag: opensuse/bci/php-apache:%%php_version%% +#!BuildTag: opensuse/bci/php-apache:8 +#!BuildTag: opensuse/bci/php-apache:latest + +FROM opensuse/tumbleweed:latest + +RUN set -euo pipefail; \ + zypper -n install php8 php8-cli php-composer2 php8-curl php8-zip php8-zlib php8-phar php8-mbstring apache2-mod_php8; \ + zypper -n clean; \ + rm -rf {/target,}/var/log/{alternatives.log,lastlog,tallylog,zypper.log,zypp/history,YaST2} + +# Define labels according to https://en.opensuse.org/Building_derived_containers +# labelprefix=org.opensuse.bci.php-apache +LABEL org.opencontainers.image.title="openSUSE Tumbleweed BCI PHP-Apache 8" +LABEL org.opencontainers.image.description="PHP-Apache 8 container based on the openSUSE Tumbleweed Base Container Image." +LABEL org.opencontainers.image.version="%%php_version%%" +LABEL org.opencontainers.image.url="https://www.opensuse.org" +LABEL org.opencontainers.image.created="%BUILDTIME%" +LABEL org.opencontainers.image.vendor="openSUSE Project" +LABEL org.opencontainers.image.source="%SOURCEURL%" +LABEL org.opencontainers.image.ref.name="%%php_version%%-%RELEASE%" +LABEL org.opensuse.reference="registry.opensuse.org/opensuse/bci/php-apache:%%php_version%%-%RELEASE%" +LABEL org.openbuildservice.disturl="%DISTURL%" +LABEL org.opensuse.lifecycle-url="https://en.opensuse.org/Lifetime#openSUSE_BCI" +LABEL org.opensuse.release-stage="released" +# endlabelprefix +LABEL io.artifacthub.package.readme-url="https://raw.githubusercontent.com/SUSE/BCI-dockerfile-generator/Tumbleweed/php-apache8-image/README.md" +ENV PHP_VERSION="%%php_version%%" +ENV PHP_INI_DIR="/etc/php8/" +ENV PHPIZE_DEPS="php8-devel awk make findutils" +ENV COMPOSER_VERSION="%%composer_version%%" +ENV APACHE_CONFDIR="/etc/apache2" + +ENTRYPOINT ["docker-php-entrypoint"] +CMD ["apache2-foreground"] +COPY docker-php-source docker-php-entrypoint docker-php-ext-configure docker-php-ext-enable docker-php-ext-install /usr/local/bin/ +RUN chmod +x /usr/local/bin/docker-php-* + +STOPSIGNAL SIGWINCH + +# create our own apache2-foreground from the systemd startup script +RUN sed 's|^exec $apache_bin|exec $apache_bin -DFOREGROUND|' /usr/sbin/start_apache2 > /usr/local/bin/apache2-foreground +RUN chmod +x /usr/local/bin/apache2-foreground + +# apache fails to start without its log folder +RUN mkdir -p /var/log/apache2 + +WORKDIR /srv/www/htdocs + +EXPOSE 80 diff --git a/README.md b/README.md new file mode 100644 index 0000000..5f10d04 --- /dev/null +++ b/README.md @@ -0,0 +1,100 @@ +# The PHP Apache 8 container image + +![Redistributable](https://img.shields.io/badge/Redistributable-Yes-green) + +PHP is a general-purpose scripting language used primarily for server-side web +development. It can be used directly, embedded in HTML files, or executed via a +server-side Apache2 module or CGI scripts. + +## How to use the image + +The image ships with the Apache web server and the `mod_php` module. + +To deploy an application, copy its sources into the htdocs folder +`/srv/www/htdocs` (this directory is the `WORKDIR` of the container image): + +```Dockerfile +FROM registry.opensuse.org/opensuse/bci/php-apache:8 + +RUN set -eux; \ + zypper -n in $my_dependencies; \ + # additional setup steps + +# Copy the app into the Apache2 document root +COPY app/ . +``` + +Build the image and run the resulting container: + +```ShellSession +$ buildah bud -t my-app . +$ podman run -d -p 8080:80 my-app +``` + +Alternatively, you can mount the application's source code directly into the +container: + +```ShellSession +$ podman run -d -p 8080:80 -v ./app/:/srv/www/htdocs:Z registry.opensuse.org/opensuse/bci/php-apache:8 +``` + +## How to install PHP extensions + +PHP extensions must be installed using the `zypper` package manager. PHP +extensions are named using the `php8-$extension_name` scheme, +and they can be installed as follows: + +```Dockerfile +FROM registry.opensuse.org/opensuse/bci/php-apache:8 + +RUN zypper -n in php8-gd php8-intl +``` + +Alternatively, you can use the `docker-php-ext-install` script. It is provided +for compatibility with the [PHP DockerHub Image](https://hub.docker.com/_/php) +but it uses zypper to install the extensions from RPMs. It is provided for +compatibility reasons and can be used similar to the script from PHP DockerHub +image: + +```Dockerfile +FROM registry.opensuse.org/opensuse/bci/php-apache:8 + +RUN docker-php-ext-install gd intl +``` + +## How to install PECL extensions + +[PECL](https://pecl.php.net/) is a package repository hosting PHP extensions. It +can be used as an alternative source to obtain PHP extensions, but without any +guarantee of interoperability with this image and without any official support. + +Install PECL extensions as follows: + +```Dockerfile +FROM registry.opensuse.org/opensuse/bci/php-apache:8 + +RUN set -euo pipefail; \ + zypper -n in $PHPIZE_DEPS php8-pecl; \ + pecl install APCu-5.1.21; +``` + +**Note:** Building an extension may require installing its dependencies first. + + +## Compatibility with the DockerHub Image + +The following scripts ship with the image to keep it compatible with the +DockerHub image: `docker-php-source`, `docker-php-ext-configure`, +`docker-php-ext-enable`, and `docker-php-ext-install`. +The script `docker-php-ext-install` performs an actual job, all others are +just no-operation scripts for interoperability. + +## Licensing + +`SPDX-License-Identifier: MIT` + +This documentation and the build recipe are licensed as MIT. +The container itself contains various software components under various open source licenses listed in the associated +Software Bill of Materials (SBOM). + +This image is based on [openSUSE Tumbleweed](https://get.opensuse.org/tumbleweed/). diff --git a/_service b/_service new file mode 100644 index 0000000..5a41292 --- /dev/null +++ b/_service @@ -0,0 +1,14 @@ + + + + + Dockerfile + %%composer_version%% + php-composer2 + + + Dockerfile + %%php_version%% + php8 + + \ No newline at end of file diff --git a/docker-php-entrypoint b/docker-php-entrypoint new file mode 100644 index 0000000..50b4074 --- /dev/null +++ b/docker-php-entrypoint @@ -0,0 +1,9 @@ +#!/bin/sh +set -e + +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then + set -- apache2-foreground "$@" +fi + +exec "$@" diff --git a/docker-php-ext-configure b/docker-php-ext-configure new file mode 100644 index 0000000..9c08ffa --- /dev/null +++ b/docker-php-ext-configure @@ -0,0 +1,2 @@ +#!/bin/sh +echo "This script is not required in this PHP container." diff --git a/docker-php-ext-enable b/docker-php-ext-enable new file mode 100644 index 0000000..9c08ffa --- /dev/null +++ b/docker-php-ext-enable @@ -0,0 +1,2 @@ +#!/bin/sh +echo "This script is not required in this PHP container." diff --git a/docker-php-ext-install b/docker-php-ext-install new file mode 100644 index 0000000..1f9c642 --- /dev/null +++ b/docker-php-ext-install @@ -0,0 +1,10 @@ +#!/bin/bash +set -euo pipefail + +extensions=() + +for ext in $@; do + [[ "$ext" =~ ^- ]] || extensions+=("php8-$ext") +done + +zypper -n in ${extensions[*]} diff --git a/docker-php-source b/docker-php-source new file mode 100644 index 0000000..9c08ffa --- /dev/null +++ b/docker-php-source @@ -0,0 +1,2 @@ +#!/bin/sh +echo "This script is not required in this PHP container." diff --git a/php-apache8-image.changes b/php-apache8-image.changes new file mode 100644 index 0000000..29b8837 --- /dev/null +++ b/php-apache8-image.changes @@ -0,0 +1,154 @@ +------------------------------------------------------------------- +Wed Jan 1 14:13:48 UTC 2025 - SUSE Update Bot + +- update copyright year + +------------------------------------------------------------------- +Tue Dec 3 13:26:37 UTC 2024 - SUSE Update Bot + +- Change attribute order in _service + +------------------------------------------------------------------- +Wed Oct 30 15:34:45 UTC 2024 - SUSE Update Bot + +- remove nonsensical org.opencontainers.image.authors - duplication of .vendor + +------------------------------------------------------------------- +Tue Oct 29 15:23:20 UTC 2024 - SUSE Update Bot + +- drop tag_version-%RELEASE% + +------------------------------------------------------------------- +Mon Oct 14 11:26:26 UTC 2024 - SUSE Update Bot + +- make the version-%release tag the first one listed; remove duplicates where they existed; update image.ref/reference to point to the version-%release(-) tag + +------------------------------------------------------------------- +Fri Oct 11 15:12:52 UTC 2024 - SUSE Update Bot + +- make the tag with -%RELEASE% the first tag listed + +------------------------------------------------------------------- +Wed Sep 25 17:36:16 UTC 2024 - Dirk Mueller + +- rerender installation step in multiple lines, allow uninstalling optional packages + +------------------------------------------------------------------- +Wed Sep 25 17:12:11 UTC 2024 - Dirk Mueller + +- improved log cleaning + +------------------------------------------------------------------- +Tue Sep 24 20:00:32 UTC 2024 - Dirk Mueller + +- remove release tags for additional_versions + +------------------------------------------------------------------- +Thu Sep 12 10:37:22 UTC 2024 - Dirk Mueller + +- set useobsrepositories explicitly + +------------------------------------------------------------------- +Wed Sep 11 08:07:25 UTC 2024 - Dirk Mueller + +- use full version in php container labels + +------------------------------------------------------------------- +Wed Aug 14 12:30:32 UTC 2024 - Dirk Mueller + +- install packages first + +------------------------------------------------------------------- +Thu Aug 8 19:28:10 UTC 2024 - Dirk Mueller + +- add oci.image.ref.name + +------------------------------------------------------------------- +Thu Aug 8 16:43:43 UTC 2024 - Dirk Mueller + +- remove oci reference annotation again + +------------------------------------------------------------------- +Mon Aug 5 11:38:13 UTC 2024 - Dirk Mueller + +- add OCI reference annotation + +------------------------------------------------------------------- +Sat Aug 3 08:56:51 UTC 2024 - Dirk Mueller + +- set OCI.authors attribute instead of deprecated MAINTAINER + +------------------------------------------------------------------- +Wed Jul 31 12:06:44 UTC 2024 - Dirk Mueller + +- set specific lifecycle url for openSUSE BCI + +------------------------------------------------------------------- +Tue Jun 18 17:24:16 UTC 2024 - Dirk Mueller + +- use sentence style capitalization in READMEs + +------------------------------------------------------------------- +Mon Jun 10 15:11:25 UTC 2024 - Dirk Mueller + +- update README; reduce unnecessary newlines + +------------------------------------------------------------------- +Wed Jun 5 15:13:27 UTC 2024 - Dirk Mueller + +- Don't add artifacthub labels into labelprefix section + +------------------------------------------------------------------- +Tue Jun 4 12:35:15 UTC 2024 - Alexandre Vicenzi + +- Fix grammar mistake in licensing footer + +------------------------------------------------------------------- +Wed May 22 13:38:53 UTC 2024 - Dan Čermák + +- Extend README + +------------------------------------------------------------------- +Sun May 19 09:10:06 UTC 2024 - Dan Čermák + +- add findutils for phpize + +------------------------------------------------------------------- +Tue May 14 15:40:34 UTC 2024 - Dirk Mueller + +- add latest tag + +------------------------------------------------------------------- +Tue May 7 19:07:24 UTC 2024 - Dirk Mueller + +- extend READMEs; correct eula for application images + +------------------------------------------------------------------- +Fri Apr 12 12:03:53 UTC 2024 - Dirk Mueller + +- Don't wipe everything in /var/log, only remove log files (this omits directories owned by packages) + +------------------------------------------------------------------- +Wed Jan 17 14:29:14 UTC 2024 - Dan Čermák + +- Add initial README stub + +------------------------------------------------------------------- +Tue Jan 2 08:26:58 UTC 2024 - Dirk Mueller + +- update year to 2024 + +------------------------------------------------------------------- +Thu Sep 28 14:29:10 UTC 2023 - Dirk Mueller + +- add copyright and description header + +------------------------------------------------------------------- +Mon Jul 24 13:32:39 UTC 2023 - Dirk Mueller + +- drop setting of APACHE_ENVVARS as it no longer exists + +------------------------------------------------------------------- +Thu Jul 06 09:56:51 UTC 2023 - SUSE Update Bot + +- First version of the PHP-Apache 8 BCI