diff --git a/.obs/workflows.yml b/.obs/workflows.yml
index 25084fdfa..cae67d7ff 100644
--- a/.obs/workflows.yml
+++ b/.obs/workflows.yml
@@ -81,6 +81,18 @@ staging_build:
source_project: home:defolos:BCI:CR:Tumbleweed
source_package: openjdk-20-image
target_project: home:defolos:BCI:CR:Tumbleweed:Staging
+ - branch_package:
+ source_project: home:defolos:BCI:CR:Tumbleweed
+ source_package: php8-image
+ target_project: home:defolos:BCI:CR:Tumbleweed:Staging
+ - branch_package:
+ source_project: home:defolos:BCI:CR:Tumbleweed
+ source_package: php-apache8-image
+ target_project: home:defolos:BCI:CR:Tumbleweed:Staging
+ - branch_package:
+ source_project: home:defolos:BCI:CR:Tumbleweed
+ source_package: php-fpm8-image
+ target_project: home:defolos:BCI:CR:Tumbleweed:Staging
- branch_package:
source_project: home:defolos:BCI:CR:Tumbleweed
source_package: init-image
@@ -202,6 +214,15 @@ refresh_devel_BCI:
- trigger_services:
project: devel:BCI:Tumbleweed
package: openjdk-20-image
+ - trigger_services:
+ project: devel:BCI:Tumbleweed
+ package: php8-image
+ - trigger_services:
+ project: devel:BCI:Tumbleweed
+ package: php-apache8-image
+ - trigger_services:
+ project: devel:BCI:Tumbleweed
+ package: php-fpm8-image
- trigger_services:
project: devel:BCI:Tumbleweed
package: init-image
diff --git a/php-apache8-image/Dockerfile b/php-apache8-image/Dockerfile
new file mode 100644
index 000000000..fb90c6b86
--- /dev/null
+++ b/php-apache8-image/Dockerfile
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: MIT
+#!BuildTag: opensuse/bci/php-apache:8
+#!BuildTag: opensuse/bci/php-apache:8-%RELEASE%
+
+FROM opensuse/tumbleweed:latest
+
+MAINTAINER openSUSE (https://www.opensuse.org/)
+
+# 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="8"
+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.opensuse.reference="registry.opensuse.org/opensuse/bci/php-apache:8-%RELEASE%"
+LABEL org.openbuildservice.disturl="%DISTURL%"
+LABEL org.opensuse.lifecycle-url="https://en.opensuse.org/Lifetime"
+LABEL org.opensuse.release-stage="released"
+
+# endlabelprefix
+
+RUN set -euo pipefail; zypper -n in php8 php8-cli php-composer2 php8-curl php8-zip php8-zlib php8-phar php8-mbstring apache2-mod_php8; zypper -n clean; rm -rf /var/log/*
+ENV PHP_VERSION="%%php_version%%"
+ENV PHP_INI_DIR="/etc/php8/"
+ENV PHPIZE_DEPS="php8-devel awk make"
+ENV COMPOSER_VERSION="%%composer_version%%"
+ENV APACHE_CONFDIR="/etc/apache2"
+ENV APACHE_ENVVARS="/usr/sbin/envvars"
+
+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/php-apache8-image/_service b/php-apache8-image/_service
new file mode 100644
index 000000000..1790ea34c
--- /dev/null
+++ b/php-apache8-image/_service
@@ -0,0 +1,14 @@
+
+
+
+
+ Dockerfile
+ %%composer_version%%
+ php-composer2
+
+
+ Dockerfile
+ %%php_version%%
+ php8
+
+
\ No newline at end of file
diff --git a/php-apache8-image/docker-php-entrypoint b/php-apache8-image/docker-php-entrypoint
new file mode 100644
index 000000000..3d36d5e8c
--- /dev/null
+++ b/php-apache8-image/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/php-apache8-image/docker-php-ext-configure b/php-apache8-image/docker-php-ext-configure
new file mode 100644
index 000000000..f16eab8f4
--- /dev/null
+++ b/php-apache8-image/docker-php-ext-configure
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "This script is not required in this PHP container."
diff --git a/php-apache8-image/docker-php-ext-enable b/php-apache8-image/docker-php-ext-enable
new file mode 100644
index 000000000..f16eab8f4
--- /dev/null
+++ b/php-apache8-image/docker-php-ext-enable
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "This script is not required in this PHP container."
diff --git a/php-apache8-image/docker-php-ext-install b/php-apache8-image/docker-php-ext-install
new file mode 100644
index 000000000..d8c601f3e
--- /dev/null
+++ b/php-apache8-image/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/php-apache8-image/docker-php-source b/php-apache8-image/docker-php-source
new file mode 100644
index 000000000..f16eab8f4
--- /dev/null
+++ b/php-apache8-image/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/php-apache8-image.changes b/php-apache8-image/php-apache8-image.changes
new file mode 100644
index 000000000..e44013e28
--- /dev/null
+++ b/php-apache8-image/php-apache8-image.changes
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------
+Thu Jul 06 09:56:51 UTC 2023 - SUSE Update Bot
+
+- First version of the PHP-Apache 8 BCI
diff --git a/php-fpm8-image/Dockerfile b/php-fpm8-image/Dockerfile
new file mode 100644
index 000000000..b9f70f4e4
--- /dev/null
+++ b/php-fpm8-image/Dockerfile
@@ -0,0 +1,65 @@
+# SPDX-License-Identifier: MIT
+#!BuildTag: opensuse/bci/php-fpm:8
+#!BuildTag: opensuse/bci/php-fpm:8-%RELEASE%
+
+FROM opensuse/tumbleweed:latest
+
+MAINTAINER openSUSE (https://www.opensuse.org/)
+
+# Define labels according to https://en.opensuse.org/Building_derived_containers
+# labelprefix=org.opensuse.bci.php-fpm
+LABEL org.opencontainers.image.title="openSUSE Tumbleweed BCI PHP-FPM 8"
+LABEL org.opencontainers.image.description="PHP-FPM 8 container based on the openSUSE Tumbleweed Base Container Image."
+LABEL org.opencontainers.image.version="8"
+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.opensuse.reference="registry.opensuse.org/opensuse/bci/php-fpm:8-%RELEASE%"
+LABEL org.openbuildservice.disturl="%DISTURL%"
+LABEL org.opensuse.lifecycle-url="https://en.opensuse.org/Lifetime"
+LABEL org.opensuse.release-stage="released"
+
+# endlabelprefix
+
+RUN set -euo pipefail; zypper -n in php8 php8-cli php-composer2 php8-curl php8-zip php8-zlib php8-phar php8-mbstring php8-fpm; zypper -n clean; rm -rf /var/log/*
+ENV PHP_VERSION="%%php_version%%"
+ENV PHP_INI_DIR="/etc/php8/"
+ENV PHPIZE_DEPS="php8-devel awk make"
+ENV COMPOSER_VERSION="%%composer_version%%"
+
+ENTRYPOINT ["docker-php-entrypoint"]
+CMD ["php-fpm"]
+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-*
+WORKDIR /srv/www/htdocs
+
+RUN set -euo pipefail; \
+ cd /etc/php8/fpm/; \
+ test -e php-fpm.d/www.conf.default && cp -p php-fpm.d/www.conf.default php-fpm.d/www.conf; \
+ test -e php-fpm.conf.default && cp -p php-fpm.conf.default php-fpm.conf; \
+ { \
+ 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'; \
+ } | tee php-fpm.d/zz-docker.conf
+
+# 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
diff --git a/php-fpm8-image/_service b/php-fpm8-image/_service
new file mode 100644
index 000000000..1790ea34c
--- /dev/null
+++ b/php-fpm8-image/_service
@@ -0,0 +1,14 @@
+
+
+
+
+ Dockerfile
+ %%composer_version%%
+ php-composer2
+
+
+ Dockerfile
+ %%php_version%%
+ php8
+
+
\ No newline at end of file
diff --git a/php-fpm8-image/docker-php-entrypoint b/php-fpm8-image/docker-php-entrypoint
new file mode 100644
index 000000000..86343d803
--- /dev/null
+++ b/php-fpm8-image/docker-php-entrypoint
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -e
+
+# first arg is `-f` or `--some-option`
+if [ "${1#-}" != "$1" ]; then
+ set -- php-fpm "$@"
+fi
+
+exec "$@"
diff --git a/php-fpm8-image/docker-php-ext-configure b/php-fpm8-image/docker-php-ext-configure
new file mode 100644
index 000000000..f16eab8f4
--- /dev/null
+++ b/php-fpm8-image/docker-php-ext-configure
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "This script is not required in this PHP container."
diff --git a/php-fpm8-image/docker-php-ext-enable b/php-fpm8-image/docker-php-ext-enable
new file mode 100644
index 000000000..f16eab8f4
--- /dev/null
+++ b/php-fpm8-image/docker-php-ext-enable
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "This script is not required in this PHP container."
diff --git a/php-fpm8-image/docker-php-ext-install b/php-fpm8-image/docker-php-ext-install
new file mode 100644
index 000000000..d8c601f3e
--- /dev/null
+++ b/php-fpm8-image/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/php-fpm8-image/docker-php-source b/php-fpm8-image/docker-php-source
new file mode 100644
index 000000000..f16eab8f4
--- /dev/null
+++ b/php-fpm8-image/docker-php-source
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "This script is not required in this PHP container."
diff --git a/php-fpm8-image/php-fpm8-image.changes b/php-fpm8-image/php-fpm8-image.changes
new file mode 100644
index 000000000..287ecc9b0
--- /dev/null
+++ b/php-fpm8-image/php-fpm8-image.changes
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------
+Thu Jul 06 09:56:51 UTC 2023 - SUSE Update Bot
+
+- First version of the PHP-FPM 8 BCI
diff --git a/php8-image/Dockerfile b/php8-image/Dockerfile
new file mode 100644
index 000000000..f0e2e99d8
--- /dev/null
+++ b/php8-image/Dockerfile
@@ -0,0 +1,34 @@
+# SPDX-License-Identifier: MIT
+#!BuildTag: opensuse/bci/php:8
+#!BuildTag: opensuse/bci/php:8-%RELEASE%
+
+FROM opensuse/tumbleweed:latest
+
+MAINTAINER openSUSE (https://www.opensuse.org/)
+
+# Define labels according to https://en.opensuse.org/Building_derived_containers
+# labelprefix=org.opensuse.bci.php
+LABEL org.opencontainers.image.title="openSUSE Tumbleweed BCI PHP 8"
+LABEL org.opencontainers.image.description="PHP 8 container based on the openSUSE Tumbleweed Base Container Image."
+LABEL org.opencontainers.image.version="8"
+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.opensuse.reference="registry.opensuse.org/opensuse/bci/php:8-%RELEASE%"
+LABEL org.openbuildservice.disturl="%DISTURL%"
+LABEL org.opensuse.lifecycle-url="https://en.opensuse.org/Lifetime"
+LABEL org.opensuse.release-stage="released"
+
+# endlabelprefix
+
+RUN set -euo pipefail; zypper -n in php8 php8-cli php-composer2 php8-curl php8-zip php8-zlib php8-phar php8-mbstring; zypper -n clean; rm -rf /var/log/*
+ENV PHP_VERSION="%%php_version%%"
+ENV PHP_INI_DIR="/etc/php8/"
+ENV PHPIZE_DEPS="php8-devel awk make"
+ENV COMPOSER_VERSION="%%composer_version%%"
+
+ENTRYPOINT ["docker-php-entrypoint"]
+CMD ["php", "-a"]
+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-*
diff --git a/php8-image/_service b/php8-image/_service
new file mode 100644
index 000000000..1790ea34c
--- /dev/null
+++ b/php8-image/_service
@@ -0,0 +1,14 @@
+
+
+
+
+ Dockerfile
+ %%composer_version%%
+ php-composer2
+
+
+ Dockerfile
+ %%php_version%%
+ php8
+
+
\ No newline at end of file
diff --git a/php8-image/docker-php-entrypoint b/php8-image/docker-php-entrypoint
new file mode 100644
index 000000000..88a016c16
--- /dev/null
+++ b/php8-image/docker-php-entrypoint
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -e
+
+# first arg is `-f` or `--some-option`
+if [ "${1#-}" != "$1" ]; then
+ set -- php "$@"
+fi
+
+exec "$@"
diff --git a/php8-image/docker-php-ext-configure b/php8-image/docker-php-ext-configure
new file mode 100644
index 000000000..f16eab8f4
--- /dev/null
+++ b/php8-image/docker-php-ext-configure
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "This script is not required in this PHP container."
diff --git a/php8-image/docker-php-ext-enable b/php8-image/docker-php-ext-enable
new file mode 100644
index 000000000..f16eab8f4
--- /dev/null
+++ b/php8-image/docker-php-ext-enable
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "This script is not required in this PHP container."
diff --git a/php8-image/docker-php-ext-install b/php8-image/docker-php-ext-install
new file mode 100644
index 000000000..d8c601f3e
--- /dev/null
+++ b/php8-image/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/php8-image/docker-php-source b/php8-image/docker-php-source
new file mode 100644
index 000000000..f16eab8f4
--- /dev/null
+++ b/php8-image/docker-php-source
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "This script is not required in this PHP container."
diff --git a/php8-image/php8-image.changes b/php8-image/php8-image.changes
new file mode 100644
index 000000000..98dc2f50e
--- /dev/null
+++ b/php8-image/php8-image.changes
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------
+Thu Jul 06 09:56:51 UTC 2023 - SUSE Update Bot
+
+- First version of the PHP 8 BCI